优化MySQL 的 limit offset
程序员文章站
2022-06-01 09:25:15
...
limit 和offset 通常会和order by 一起使用。索引对排序比较有帮助,如果没有索引就需要大量文件排序,因此在order by 列一定要
limit 和offset 通常会和order by 一起使用。索引对排序比较有帮助,
如果没有索引就需要大量文件排序,因此在order by 列一定要添加索引。
如果有:
select * from mytable order by sp_id limit 100000,10
类似的sql语句出现,那么这个操作的代价非常高,会扫描 100010 行数据。
这个时候可以改成
select * from mytable
inner join (
select pid from mytable order by sp_id limit 100000,10
) as lim using (pid);
注: sp_id 建立了 BTREE 索引
则能够让服务器在索引上面检查尽可能少的数据,一旦取得了需要的行,就将他们连接在完整的表上面,,并取得其余的列。
修改前的SQL 语句执行时间为 2.10 秒,修改后的SQL语句执行时间为 1.75秒。节省了 0.35秒的时间。
上一篇: php字符串函数