MySQL优化之limit和order by
程序员文章站
2024-03-23 15:16:46
...
优化order by
查询影片 id 和描述信息,并根据主题进行排序,取出从序号 50 条开始的 5 条数据。
未优化的sql语句如下
select film_id,description from sakila.film order by title limit 50,5;
我们让order by的字段为主键索引,再看执行计划,大大提高了效率
select film_id,description from sakila.film order by film_id limit 50,5;
优化limit
假如我们要从数十万数百万条数据的某一行开始,取5条记录,这样一来IO操作会越来越大,所以接下来我们要记录上次查询的主键,下次查询时使用主键过滤。这样就避免了数据量大时扫描过多的记录
select film_id,description from sakila.film where film_id >600 and film_id<=605 order by film_id limit 1,5;
可以看到这样操作,检索的行数就只有5行了,不论是你从几千几万条数据开始。
k
说明:主键要顺序排序并连续的,如果主键中间空缺了某一列,或者某几列,会出现列出数据不足 5 行的数据;如果不连续的情况,建立一个附加的列 index_id 列,保证这一列数据要自增的,并添加索引即可
下一篇: JAVA - ThreadLocal 类
推荐阅读
-
MySQL优化之limit和order by
-
MySQL-优化order by
-
MySQL - 库表设计之IP和TIMESTAMP的处理
-
MySQL查询优化之四-引擎条件下推优化优化(Engine Condition Pushdown Optimization)
-
MySQL 查询优化之 Index Condition Pushdown
-
【MySQL】索引优化中的最左前缀原则和索引下推
-
选择优化的数据类型 (五)日期和时间类型 博客分类: mysql datetimetimestamp
-
MySQL之操作系统配置优化(TCP连接数/文件打开限制)
-
Jemalloc优化MySQL和Nginx
-
Jemalloc优化MySQL和Nginx