看到叶金荣的一篇关于mysql分页的文章,结合雅虎之前发的一篇PDF 谈谈自己的看法
在叶子的文章里谈到了使用inner join 从而减少了对page的扫描也就是减少了所谓的回表 例如:
SELECT * FROM `t1` INNER JOIN ( SELECT id FROM `t1`ORDER BY id DESC LIMIT 935500,10) t2 USING (id)
通过直接对id的操作 而不是整张表的扫描 通过id 的join 抓出符合条件id 然后通过ID 再去做数据的抓取。这样就避免了对不需要的页面的扫描。
不过这样也不是最佳的方法 还可以通过对id 的 range更加缩小范围 例如:
我们要分100条记录分一页 可以写成
$page_size=100 select * from t where id > 99 order by id asc limit $page_size ; select * from t where id >199 order by id asc limit $page_size;…[Read more]