目前想用 php 动态输出网站 sitemap,而网站的网址形式都如 www。example。com/[数据库自增 id].html,所以只需要对数据库 primary key 进行分页,在 offset 比较小的情况下,query 时间很短,但是当 offset 很大的情况下(每个 sitemap 总共 500 条 URL ):
SELECT id FROM MyTable ORDER BY id ASC LIMIT 19990000,500
查询时间很长,像这种只涉及到自增 id 的大表分页,怎样快速进行分页?
|  |      1vicalloy      2019-03-26 08:57:49 +08:00 太老的页面直接不给查。 分表。 | 
|  |      2lostvincent      2019-03-26 09:08:41 +08:00 关键词:late row lookup | 
|  |      3jswh      2019-03-26 09:12:46 +08:00 offset 大的时候用 id > x 会比 limit 好一点 | 
|  |      4keepeye      2019-03-26 09:15:43 +08:00 select * from YOURTABLE where id > (select id from YOURTABLE limit OFFSET,SIZE) | 
|  |      5sagaxu      2019-03-26 09:17:44 +08:00 via Android https://explainextended.com/2011/02/11/late-row-lookups-innodb/ 只有 myisam 才有这个问题,pgsql 或者 innodb 没有这个坑 | 
|  |      7haiyang416      2019-03-26 09:35:02 +08:00 不要用 offset 来做了,把每次查询的最后一个 ID 作为分页依据。 | 
|      8snappyone      2019-03-26 09:45:20 +08:00 参考 4 楼子查询 | 
|  |      9opengps      2019-03-26 11:16:05 +08:00 这个情况,表分区特别合适 | 
|      10dongyu      2019-03-26 17:52:57 +08:00 用索引过滤 |