如何进行SQL优化中的limit分页优化
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,如何进行SQL优化中的limit分页优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。示例表aaaaa中共有2375690数据。优化前的
千家信息网最后更新 2025年11月08日如何进行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安全错误
数据库的锁怎样保障安全
软件开发应标书
域名怎么绑定服务器
初用ecs服务器体验
铁鱼网络技术有限公司
区块链软件开发成本是多少
淘宝关键词 数据库
违反信息与网络安全管理制度
捧丝儿网络技术有限公司
没有专利申请权的软件开发
软件开发电脑配置组装
深圳专业软件开发价格表
网络安全风险评估工具箱
辽宁省网络安全大讲堂锦州站
网络安全搭建教程
登陆服务器时显示安全登陆
软件开发网店管理系统建立
什么是软件开发的思维方式
山东计算机网络技术学校
我的世界服务器管理员恶搞玩家
郑州民宿软件开发
电气工程师网络安全工程师
运营商网络技术工程师
东阳软件开发税率
济南利博网络技术
软件开发计划的目的和任务
东南大学网络安全学院温广辉
中国移动服务器最新招标
路由器无线网络安全认证选项
kafka数据写到数据库
音乐网站音乐放在本地还是数据库