【发布时间】:2011-11-12 23:52:27
【问题描述】:
我需要加入 3 个表 a、b、c,并且我知道最左边的表中只有一行必须出现在最终结果中。
SELECT *
FROM a
LEFT JOIN b
ON a.id = b.id
LEFT JOIN c
ON c.id2 = b.id2
WHERE a.id = 12;
我提出了以下查询,因为它似乎更有效,但两个查询都需要相同的时间来执行。这是因为第一个查询被优化了吗?我应该费心选择更有效的(第二个)查询还是坚持第一个查询,因为它更具可读性?
SELECT *
FROM (SELECT * FROM a WHERE id=12) AS temp
LEFT JOIN b
ON temp.id = b.id
LEFT JOIN c
ON b.id2 = c.id2;
【问题讨论】:
-
我只看到第一个使用它,但考虑到更大的数据源,第二个似乎需要更多时间来处理。
-
您应该检查两个查询的执行计划,看看 MySQL 做了什么。如果在 Oracle 或 PostgreSQL 中对这两个查询进行相同处理,我不会感到惊讶,所以也许 MySQL 也足够聪明
标签: mysql select join query-optimization left-join