高效MySQL分页

 

 

mysql查询语句中提供了关键字“limit”可以较方便的进行排序,但是个人认为进行大数据查询时其效率很低。如果稍稍修改会有很大的提高

 

mysql> SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20

 

 

假设表中的id为自增字段,步段为1.数据库为只增加不减少。用以下语句的效率更高

 SELECT * FROM message WHERE id > 1000 ORDER BY id ASC LIMIT 20,20;

但是数据库是不断更新删除的,id并不会连续不断,这就需要我们在程序中用一个变量来记录最后一次查询的id号;

mysql> explain SELECT * FROM message WHERE id > 'id' ORDER BY id ASC LIMIT 20,20;

这样效果明显提高。

 

同理可以提高反方向查询

 SELECT * FROM message WHERE id <'id' ORDER BY id DESC LIMIT 40,20;

 

 

文档Efficient Pagination Using MySQL

 

 

 

 

你可能感兴趣的:(mysql)