Mysql-分页查询优化

来源:互联网 发布:smt贴片机编程 编辑:程序博客网 时间:2024/06/04 19:07

###分页查询优化
分页查询在 mysql 中常遇到,如以下语句

select * from TableName limit 100,20;

用时大约需要0.03 sec。用时很短。

但是随着偏移量的增加,查询时间也随之增加。比如如下代码:

select * from TableName limit 10000000,20

用时大约需要32.43 sec,这个时间是不是就有点长了了?可以优化吗?答案是可以的。那么,该怎样优化?

  • 优化方法1
select * from TableName order by id limit 10000000,20;

用时大约需要17.71 sec,还是有点长。

  • 优化方法2
select * from TableName where id >= (select id from TableName order by id limit 10000000,1) limit 20;

用时大约需要4.01 sec。

  • 优化方法3
select * from TableName a, (select id from TableName where status=1 order by id limit 10000000,10) b where a.id=b.id

用时大约需要4.43sec。

  • 优化方法4
select * from TableName as a inner join (select id from TableName order by id limit 10000000,20) as b on a.id=b.id order by a.id;

用时大约需要3.98sec。

可见优化方法2、优化方法3 和 优化方法4 运行时间差不多,相比于32.43 sec,效率提高八倍左右。

注:sql 语句中的 TableName指代的工作中一个有40000000多万记录的表。

0 0
原创粉丝点击