首页 > 如何提高mysql中in查询和limit分页性能?

如何提高mysql中in查询和limit分页性能?

现在有类似这样业务需求,
SELECT id, name, detail FROM student WHERE id NOT IN (1,788,103,100) ORDER BY id DESC LIMIT 1000,10
表数据非常大,要考虑两个性能优化点,一个是in查询,一个是limit分页


假设不用数据库,你想想你应该如何做这个优化。

别难为数据库,这种事情应该自己动脑筋。


方法一:首先根据索引查询出需要的行,然后关联查询对应的信息

select id, name, detail from student inner join (select id from student where id not in (1, 788, 103, 100) order by id desc limit 1000, 10) as t1 on t1.id = student.id;

方法二:可以分页查询每页的数据,然后根据上一页的id来查询下一页,比如上一页最后的id是num1

select id, name, detail from student where id not in (1, 788, 103, 100) and id < num1 order by id desc limit 10;

limit分页这个没办法优化,就那样了。 IN的话可以走索引。你的字段ID又是primary key, 所以还真没有优化之说,具体可以

desc SELECT id, name, detail FROM student WHERE id NOT IN (1,788,103,100) ORDER BY id DESC LIMIT 1000,10
【热门文章】
【热门文章】