如何进行SQL优化中的limit分页优化
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,如何进行SQL优化中的limit分页优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。示例表aaaaa中共有2375690数据。优化前的
千家信息网最后更新 2025年01月21日如何进行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安全错误
数据库的锁怎样保障安全
软件开发说明文档
以太网计算机网络技术
ibm 服务器 销售
吉林市网络安全和信息化委员
软件开发需要资金的地方
软件开发自动更新
交通行业服务器加固系统费用
独立软件开发商上市公司
中兴服务器怎么重置
大闹天宫修改数据库
数据库 文字可以吗
软件开发者点数不足怎么回事
南京金肯有网络安全专业吗
靠谱的仓库管理软件开发项目
网络安全审查办法 2022版
护苗网络安全课堂黑板报
linux 删库数据库
网络安全运维工作前景
图数据库与关系型数据库一起使用
国家网络技术水平考试二级
dns青海电信服务器地址
云服务器正常使用
物业公司app软件开发计划
字节跳动服务器硬盘颗粒
软件开发岗位相关能力
软件开发技术培训机
y数据库采血
军校学网络安全需要手提电脑吗
mmc服务器
软件开发主管年终工作总结