MySQL 原理与优化之Limit 查询优化


Posted in MySQL onAugust 14, 2022

MySQL 原理与优化之Limit 查询优化

假设有表tb_sku,其表结构如下:

MySQL 原理与优化之Limit 查询优化

表中大约有200w条记录,执行如下的sql 语句大约 4.36s 返回数据

select count(*) from tb_sku;

MySQL 原理与优化之Limit 查询优化

接着我们使用 对其进行分页查找:

select * from tb_sku limit 0,10;

limit 语句 其中0 代表起始位置,10 为每页返回的数据数量。

MySQL 原理与优化之Limit 查询优化

如上图所示,很快就返回了查询结果。

接着我们再使用SQL 语句

select * from tb_sku limit 10,10;

语句从记录位置10的位置开始再往下返回10 条记录,也就是第二页的信息。其返回时间也是比较快。

然后,我们加大起始位置 到100w如下:

select * from tb_sku limit 1000000,10;

MySQL 原理与优化之Limit 查询优化

此时返回时间需要0.74 s,这说明了使用limit 对大数据量的表进行分页,位置越靠后效率越低。拿上面的例子来说,limit 会先对 100w 的数据进行排序,然后再返回10 条数据,而且仅仅返回100w 到 100w 零10条 的记录,其他查询的记录都会丢弃掉,这种做法查询排序的代价非常大。

由此我们需要对大数据量表进行limit 操作进行优化,官方给出的方案是通过覆盖索引和子查询的方式进行优化

根据这个思路首先对id 进行查询:

select id from tb_sku order by id limit 1000000,10;

MySQL 原理与优化之Limit 查询优化

查询结果就只需要0.34s 比之前的0.74s要快多了。究其原因,因为直接返回id的信息,并没有进行回表操作,所以速度别select * 要快

由于我们需要获得select * 的信息,也就是tb_user 所有字段的信息,因此需要将上面的查询结果和tb_user 进行jion 操作。

select s.* from tb_sku s ,(select id from tb_sku order by id limit 1000000,10 ) t where s.id = t.id;

MySQL 原理与优化之Limit 查询优化

这里通过查询id 和子查询 的方式将查询结果缩短为 0.38s,比之前直接通过 select * 的方式要缩短一倍的查询时间。

到此这篇关于MySQL 原理与优化之Limit 查询优化的文章就介绍到这了,更多相关MySQL Limit 优化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL InnoDB ReplicaSet(副本集)简单介绍
Apr 24 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
MySQL系列之九 mysql查询缓存及索引
Jul 02 MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 MySQL
一文弄懂MySQL索引创建原则
Feb 28 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
MySQL创建管理LIST分区
Apr 13 MySQL
MySQL聚簇索引和非聚簇索引的区别详情
Jun 14 MySQL
MySQL数据库之内置函数和自定义函数 function
Jun 16 MySQL
mysql sql常用语句大全
Jun 21 MySQL
MySQL池化框架学习接池自定义
Jul 23 MySQL
MySQL 原理优化之Group By的优化技巧
Aug 14 #MySQL
mysql函数之截取字符串的实现
Aug 14 #MySQL
MySQL 原理与优化之原数据锁的应用
MySql按时,天,周,月进行数据统计
Aug 14 #MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 #MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 #MySQL
MySQL数据库查询之多表查询总结
Aug 05 #MySQL
You might like
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
python and or用法详解
2019/06/26 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
html5.2 dialog简介详解
2018/02/27 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
2015年营业员工作总结
2015/04/23 职场文书
2015年消防工作总结
2015/04/24 职场文书
行政诉讼答辩状
2015/05/21 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
关于五一放假的通知
2015/08/18 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
求职自我评价参考范文
2019/05/16 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers