【发布时间】:2015-10-05 13:18:25
【问题描述】:
假设t是一个大表,下面两个查询
SELECT t1.value, t2.value
FROM t as t1 JOIN t as t2
ON t1.id = t2.id
WHERE t1.key = '123'
和
SELECT t1.value, t2.value
FROM t as t1 JOIN t as t2 JOIN t as t3
ON t1.id = t2.id
WHERE t1.key = '123'
第二个与未在 SELECT 中使用的表进行 JOIN。
第二个查询执行得慢得多。我希望 MySQL 会发现没有使用第三个 JOIN 并且会忽略它。但它没有?
【问题讨论】:
-
如果您想了解查询的性能和执行情况,那么您必须从 EXPLAN(和/或 EXPLAIN EXTENDED)开始