如何进行SQL优化中的limit分页优化
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,如何进行SQL优化中的limit分页优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。示例表aaaaa中共有2375690数据。优化前的
千家信息网最后更新 2026年11月01日如何进行SQL优化中的limit分页优化
如何进行SQL优化中的limit分页优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
示例
表aaaaa中共有2375690数据。
优化前的SQL
SQL执行结果:
SELECT DISTINCT(device_id) uid FROM aaaaa WHERE status = 0 LIMIT 88000,1000;1000 rows in set (0.48 sec)
SQL执行计划:
MariaDB [star]> explain SELECT sql_no_cache DISTINCT(device_id) uid FROM aaaaa WHERE status = 0 LIMIT 88000,1000;+------+-------------+---------------+------+---------------+------+---------+------+---------+------------------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+------+-------------+---------------+------+---------------+------+---------+------+---------+------------------------------+| 1 | SIMPLE | aaaaa | ALL | NULL | NULL | NULL | NULL | 2375690 | Using where; Using temporary |+------+-------------+---------------+------+---------------+------+---------+------+---------+------------------------------+
优化方式
迅速定位起始ID,利用主键索引,加快扫描速度。可以看到,derived中,SQL使用到了覆盖索引进行扫描,虽然还是全表扫,因为只扫描id列,大大降低了扫描的IO耗费,快速定位到了id。
MariaDB [star]> explain SELECT sql_no_cache DISTINCT(device_id) uid FROM aaaaa join (select id from aaaaa limit 88000,1) k on star_device_5.id>=k.id where status=0 limit 1000; +------+-------------+---------------+-------+---------------+-------------+---------+------+---------+------------------------------------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+------+-------------+---------------+-------+---------------+-------------+---------+------+---------+------------------------------------------------+| 1 | PRIMARY | | ALL | NULL | NULL | NULL | NULL | 88001 | Using temporary || 1 | PRIMARY | star_device_5 | ALL | PRIMARY | NULL | NULL | NULL | 2377112 | Range checked for each record (index map: 0x1) || 2 | DERIVED | star_device_5 | index | NULL | idx_star_id | 8 | NULL | 2377112 | Using index |+------+-------------+---------------+-------+---------------+-------------+---------+------+---------+------------------------------------------------+
执行结果:
SELECT sql_no_cache DISTINCT(device_id) uid FROM star_device_5 join (select id from star_device_5 limit 880000,1) k on star_device_5.id>=k.id where status=0 limit 1000;1000 rows in set (0.19 sec)
随着m的增大和n的增大,两种写法的SQL执行时间会有本质差别。我做了测试,当m值增加到880000时,优化前的SQL需要2分钟,优化后的SQL还是0.1s左右。
看完上述内容,你们掌握如何进行SQL优化中的limit分页优化的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
内容
方法
更多
索引
结果
还是
问题
定位
束手无策
为此
写法
原因
对此
差别
技能
数据
方式
时间
本质
示例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新华互联网科技学校
科技金融是不是互联网金融
疫情对互联网科技公司影响
万易互联网科技
汇久创客互联网科技
长亮科技 互联网金融
撒么互联网科技公司
互联网前沿科技
丰台科技园 互联网公司
互联网科技公司的市场部门
互联网科技寓意
未来五年的互联网科技
畅思互联网科技
互联网科技如何创业
互联网企业科技类企业如何做账
智帮互联网科技公司最近动向
产业互联网科技服务公司
工业互联网科技创业
福建互联网展示科技馆设计
湖北辰鑫科技互联网
中智农互联网科技
互联网中国科技
嘟嘟瓜互联网科技
济南和联互联网科技有限公司
互联网金融中的现代科技
互联网科技的全部知识
众安科技工业互联网合作
互联网风格科技公司名称
工业互联网科技创业
广东鹅鹅鹅互联网科技有限公司