哪一个更快:相关子查询还是加入?

Eri*_*rdt 10 mysql sql

我知道我们可以做相关的子查询并加入.但哪一个更快?是否有黄金法则或我必须衡量两者?

Gor*_*off 19

首先,相关子查询确实是一种连接.关于哪个产生最佳执行计划没有黄金法则.如果您对性能感兴趣,您需要尝试不同的表单以查看最佳效果.或者,至少,看看做出决定的执行计划.

一般来说,我倾向于避免相关子查询,原因有两个.首先,它们几乎总是可以在没有相关性的情况下编写.其次,许多查询引擎将它们转换为嵌套循环连接(尽管使用索引),其他连接策略可能更好.在这种情况下,相关子查询会使查询并行化变得困难.第三,相关子查询通常在SELECT或WHERE子句中.我喜欢所有的表都在FROM子句中.

然而,在MySQL中,相关子查询通常是进行查询的有效方式.在IN子句中使用子查询时尤其如此.所以,没有黄金法则.