欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;

MySQL优化之limit和order by

 

我们让order by的字段为主键索引,再看执行计划,大大提高了效率

select film_id,description from sakila.film order by film_id limit 50,5;

 

MySQL优化之limit和order by

 

 

优化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行了,不论是你从几千几万条数据开始。

kMySQL优化之limit和order by

说明:主键要顺序排序并连续的,如果主键中间空缺了某一列,或者某几列,会出现列出数据不足 5 行的数据;如果不连续的情况,建立一个附加的列 index_id 列,保证这一列数据要自增的,并添加索引即可

相关标签: [MySQL]