JVic Asked:2020-09-27 14:37:50 +0000 UTC2020-09-27 14:37:50 +0000 UTC 2020-09-27 14:37:50 +0000 UTC 如何优化一个简单的 SQL 查询 772 选择 1000000 之后的前 5 条记录的最佳方法是什么? SELECT * FROM table ORDER BY ID LIMIT 1000000,5 我决定玩“彩票”并选择前 5 个条目,但如果这改变了某些东西,我可以添加按 ID 排序。ID - 索引字段! 任务不真实 mysql 1 个回答 Voted Best Answer minamoto 2020-09-28T15:16:11Z2020-09-28T15:16:11Z 简短的回答: SELECT t.* FROM ( SELECT id FROM table ORDER BY id LIMIT 1000000,5 ) q JOIN table t ON t.id = q.id 更详细的答案:使用这些参数的直接查询会读取表中从 1 到 1000005 的所有记录,但只返回最后 5 条记录,由于冗余读取,您会得到一个长查询。为了加快速度,你需要“告诉”引擎你不需要读取从 1 到 1000005 的整个表,而只需要读取索引,选择从中读取的最后 5 条记录,然后将值连接起来从整个表。 这篇文章中有一个完整的答案(英文): https ://explainextended.com/2009/10/23/mysql-order-by-limit-performance-late-row-lookups/
简短的回答:
更详细的答案:使用这些参数的直接查询会读取表中从 1 到 1000005 的所有记录,但只返回最后 5 条记录,由于冗余读取,您会得到一个长查询。为了加快速度,你需要“告诉”引擎你不需要读取从 1 到 1000005 的整个表,而只需要读取索引,选择从中读取的最后 5 条记录,然后将值连接起来从整个表。
这篇文章中有一个完整的答案(英文): https ://explainextended.com/2009/10/23/mysql-order-by-limit-performance-late-row-lookups/