limit优化

简介:

mysql> select SQL_NO_CACHE * from test1 order by id limit 99999,10;                                                           
+--------+--------+------+
| id     | tid    | name |
+--------+--------+------+
| 100000 | 100000 | abc  |
| 100001 | 100001 | abc  |
| 100002 | 100002 | abc  |
| 100003 | 100003 | abc  |
| 100004 | 100004 | abc  |
| 100005 | 100005 | abc  |
| 100006 | 100006 | abc  |
| 100007 | 100007 | abc  |
| 100008 | 100008 | abc  |
| 100009 | 100009 | abc  |
+--------+--------+------+
10 rows in set (0.07 sec)

虽然用上了id索引,但要从第一行开始起定位至99999行,然后再扫描出后10行。相当于一个全表扫描。

mysql> select SQL_NO_CACHE * from test1 where id >=100000 order by id limit 10;
+--------+--------+------+
| id     | tid    | name |
+--------+--------+------+
| 100000 | 100000 | abc  |
| 100001 | 100001 | abc  |
| 100002 | 100002 | abc  |
| 100003 | 100003 | abc  |
| 100004 | 100004 | abc  |
| 100005 | 100005 | abc  |
| 100006 | 100006 | abc  |
| 100007 | 100007 | abc  |
| 100008 | 100008 | abc  |
| 100009 | 100009 | abc  |
+--------+--------+------+
10 rows in set (0.00 sec)

第二种写法比第一种快了7倍。

利用id索引直接定位100000行,然后再扫描出后10行。相当于一个range范围扫描。


本文转自 liang3391 51CTO博客,原文链接:http://blog.51cto.com/liang3391/824878

相关文章
|
7月前
|
SQL 关系型数据库 MySQL
MySQL数据库——SQL优化(3/3)-limit 优化、count 优化、update 优化、SQL优化 小结
MySQL数据库——SQL优化(3/3)-limit 优化、count 优化、update 优化、SQL优化 小结
317 0
|
8月前
|
SQL 算法 关系型数据库
MySQL查询优化之order by 、 group by与分页查询优化
MySQL查询优化之order by 、 group by与分页查询优化
393 0
|
SQL 关系型数据库 MySQL
MySQL分页查询详解:优化大数据集的LIMIT和OFFSET
MySQL的分页查询是处理大量数据集的常见需求,了解`LIMIT`和`OFFSET`关键字的用法可以帮助您有效地实现分页功能。同时,性能优化也是确保查询高效执行的关键。通过合理配置和结合其他优化策略,您可以轻松应对分页查询的挑战,提供更好的用户体验。
1239 0
MySQL分页查询详解:优化大数据集的LIMIT和OFFSET
|
机器学习/深度学习 存储 SQL
别再用 offset 和 limit 分页了,性能太差
别再用 offset 和 limit 分页了,性能太差
1532 0
别再用 offset 和 limit 分页了,性能太差
|
数据库
分页limit和排序order by
分页limit和排序order by
|
SQL 关系型数据库 索引
|
SQL Oracle 关系型数据库
PostgreSQL JOIN limit 优化器 成本计算 改进 - mergejoin startup cost 优化
标签 PostgreSQL , join , limit , startup cost , cbo , 优化器改进 背景 PostgreSQL limit N的成本估算,是通过计算总成本A,以及估算得到的总记录数B得到: (N/B)*A 大概意思就是占比的方法计算 对于单表查询...
1233 0
|
关系型数据库 PostgreSQL
PostgreSQL sharding : citus 系列7 - topn 加速(count(*) group by order by count(*) desc limit x) (use 估值插件 topn)
标签 PostgreSQL , topn , topn.number_of_counters , count(*) group by order by count(*) desc limit x 背景 count(*) group by order by count(*) desc limit x 用来统计 topn。
1436 0
|
SQL NoSQL 关系型数据库
一次 group by + order by 性能优化分析
我的个人博客 https://mengkang.net/1302.html 最近通过一个日志表做排行的时候发现特别卡,最后问题得到了解决,梳理一些索引和MySQL执行过程的经验,但是最后还是有5个谜题没解开,希望大家帮忙解答下 主要包含如下知识点 用数据说话证明慢日志的扫描行数到底是如何统计出来的 从 group by 执行原理找出优化方案 排序的实现细节 gdb 源码调试 背景 需要分别统计本月、本周被访问的文章的 TOP10。
16310 0

热门文章

最新文章

下一篇
开通oss服务