目录
1.问题
select id from test_table where userid in (1,2)
order by id desc limit 0, 10
当 userId比较多时,出现了慢sql
(前提:有 userId索引,和 id主键索引)
2.原因
这个因为查询的 id,order by 也是id,mysql会优先走 id的索引,导致区分度不大,没有用 where里的userId的索引条件。出现慢sql。
3.解决
修改为链表查询,让mysq主要走 where条件里的 userId的索引,同时小表链大表好一点(inner join 两表不涉及顺序)
select id from test_table
inner join
(
select id from test_table where userid in (1,2)
) tmp_table
on test_table.id = tmp_table.id
order by tmp_table.id desc limit 0, 10