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 frommytableorder by sp_id limit 100000,10
) as lim using (pid);
注: sp_id 建立了 BTREE 索引
则能够让服务器在索引上面检查尽可能少的数据,一旦取得了需要的行,就将他们连接在完整的表上面,并取得其余的列。
修改前的SQL 语句执行时间为 2.10 秒,修改后的SQL语句执行时间为 1.75秒。节省了 0.35秒的时间。
本文介绍了一种通过使用内连接查询来提高SQL查询效率的方法。针对特定的SQL语句,通过改变查询方式,使得服务器能够在索引上检查尽可能少的数据,从而显著减少执行时间。
1070

被折叠的 条评论
为什么被折叠?



