全栈开发
数据库
【Q459】mysql 中 limit offset 过大导致查询缓慢的原因及解决方案

mysql 中 limit offset 过大导致查询缓慢的原因及解决方案

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 467 (opens in a new tab)

Author 回答者: shfshanyue (opens in a new tab)

SELECT * FROM User LIMIT 1000000, 10

如上语句,跳过 1000000 行用户,取其后的 10 个用户。其中 offset 过大,将会进行 1000000 行扫描,导致磁盘 IO 多大,拖垮数据库

解决方案也很简单: 取出这10个用户的 ID,由于查询 ID 使用聚簇索引,避免 100000 行的磁盘 IO,再通过子查询找到这 10 个用户的所有数据

更多链接: Mysql index configuration (opens in a new tab)