环境:MySQL5.5 InnoDB表 post
,主键为 id
需求非常简单,根据id返回 post.name
,需要一次返回指定的多个,所以使用了where id in
:
1 2 |
|
Explain结果:
1 2 3 4 5 6 |
|
现在这句SQL一小时产生几千条慢查询记录,我直接在console执行每次也需要7,8秒
能怎么优化呢?
迷茫2017-04-10 14:33:16
从纯sql的角度看是没问题的,走了索引,rows值也不大,如果速度很慢,可以从3个方面看 1:innodb参数是否已经优化,比如innodbbufferpoor_size等 2:qcache命中率。根据你上诉问题,一小时该语句产生几千条慢查询,命中率明显不高,是否该表写入频率过高导致qcache失效,是否考虑读写分离 3:数据量大的话考虑分区,或者水平分表