SQL速度增加:左连接,或笛卡尔积/ where子句

时间:2014-08-12 18:16:10

标签: java mysql sql

我正在使用Web服务中的sql查询,并希望提高速度。截至目前,查询采用多个表的笛卡尔积,并使用where子句将它们分开。

我想知道切换到LEFT JOIN是否会使查询执行得更快,因为我在结果中想要的每一行都是基于一个表,其他信息是从其他表中提取的。

1 个答案:

答案 0 :(得分:0)

使用笛卡尔语法无法在MySQL中表达LEFT JOIN的意图。

在Oracle中,这种所谓的omega-join语法

SELECT whatever FROM A, B WHERE A.col=B.col(+) 

相当于:

SELECT whatever FROM A LEFT JOIN B ON A.col=B.col

但在MySQL中只有后一种语法有效。因此,如果你想在MySQL中进行真正的LEFT JOIN操作,你别无选择:笛卡尔/ WHERE语法不起作用。

就优化而言,MySQL的查询执行计划程序在理解用cartesian / WHERE语法表达的普通INNER JOIN操作方面做得非常好。但是你几乎总是更好地使用JOIN语法。它更容易阅读,查询计划程序也能理解它。