mysql limit分页查询效率

对于有大数据量的mysql表来讲,使用LIMIT分页存在很严重的性能问题。mysql

查询从第1000000以后的30条记录:sql

SQL代码1:平均用时6.6秒 SELECT * FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 30post

SQL代码2:平均用时0.6秒 SELECT * FROM `cdb_posts` WHERE pid >= (SELECT pid FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 1) LIMIT 30性能

由于要取出全部字段内容,第一种须要跨越大量数据块并取出,而第二种基本经过直接根据索引字段定位后,才取出相应内容,效率天然大大提高。大数据

能够看出,越日后分页,LIMIT语句的偏移量就会越大,二者速度差距也会越明显。索引

实际应用中,能够利用相似策略模式的方式去处理分页,好比判断若是是一百页之内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。效率

相关文章
相关标签/搜索