环境:MySQL5.5 InnoDB表 post ,主键为 id
需求非常简单,根据id返回 post.name ,需要一次返回指定的多个,所以使用了where id in:
select `name` from `post` where `id` in(2142324,2106574,2106564,2075699,2065402,2050790,2038346,2038345,2035588,2031765,035,034,745,737,718,1987558,1970241,1962232,1911342,1891481,1889641,1877438,1877434,1867217,1866057,1866013,1847315);
Explain结果:
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | post | range | PRIMARY | PRIMARY | 4 | NULL | 27 | Using where |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
现在这句SQL一小时产生几千条慢查询记录,我直接在console执行每次也需要7,8秒
能怎么优化呢?