【发布时间】:2012-02-19 20:07:45
【问题描述】:
热身。 A 有数百万条记录,B、C、D... 更小(数千条)
SELECT ... FROM A LEFT OUTER JOIN B ... LIMIT 1000 OFFSET 0;
这在
SELECT ... FROM A LEFT OUTER JOIN B ... LIMIT 1000 OFFSET 1000000;
这会在 > 4 秒后返回
假设按 A 的 PK 排序,并且所有连接都正确索引,我会假设这 2 个操作应该具有相似的性能,但根据偏移量看起来它的 O(N)...
查询计划不应该是先从A中选择1000个然后进行join吗?我将仅 A 的选择与两个不同的偏移量进行了比较,时间差远小于 1 秒,因此不应解释给定连接的时间差异。
这是mysql查询计划优化器的缺陷吗?
【问题讨论】:
-
This question似乎有些相似。也许它对你有用。
标签: mysql