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字符串截取函数小结
Apr 05 MySQL
MySQL中VARCHAR与CHAR格式数据的区别
May 26 MySQL
MySQL查看表和清空表的常用命令总结
May 26 MySQL
分析mysql中一条SQL查询语句是如何执行的
Jun 21 MySQL
Mysql数据库按时间点恢复实战记录
Jun 30 MySQL
MySQL系列之十二 备份与恢复
Jul 02 MySQL
SQL实现LeetCode(175.联合两表)
Aug 04 MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 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
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
jQuery html()等方法介绍
2009/11/18 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
计算机专业个人求职信范例
2013/09/23 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
要账委托书范本
2014/09/15 职场文书
2014年司法所工作总结
2014/11/22 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
宿舍管理制度范本
2015/08/07 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书