mysql优化 - 如何提高mysql中in查询和limit分页性能?
大家讲道理
大家讲道理 2017-04-17 12:07:37
[MySQL讨论组]

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
迷茫

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
PHPz

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

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;
黄舟

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号