MySQL性能:JOIN ON与WHERE

Vas*_*r V 28 mysql performance join

可能重复:
MySQL:内连接vs
显式vs隐式SQL连接

当我们使用"JOIN ON"和"WHERE"子句运行连接查询时,性能是否存在差异?(无论表的数量或表中的条目数)

不确定是否已经讨论过这个主题.即便如此,我想知道是否使用最新版本的mySQL(5.1及更高版本),事情已经发生了变化.

解释声明清楚地显示了需要考虑的行数的很多差异.

我使用的语法是:

使用JOIN ON

SELECT <field names>
FROM <table1>
JOIN <table2> ON <join_condition>
AND JOIN <table3> ON <join_condition> 
AND JOIN <table4> ON <join_condition> 
.... 
Run Code Online (Sandbox Code Playgroud)

使用WHERE

SELECT <field names> 
FROM <table names list separated by comma> 
WHERE <join_condition> 
AND <join_condition> 
AND <join_condition> 
.... 
Run Code Online (Sandbox Code Playgroud)

所以不确定JOIN ON或WHERE子句的使用是否会产生影响.请协助.

Nic*_*ark 2

我怀疑使用“JOIN”正在执行“LEFT JOIN”。尝试使用“INNER JOIN”并查看解释语句是否相同。

SELECT <field names>
FROM <table1>
INNER JOIN <table2> ON <join_condition>
INNER JOIN <table3> ON <join_condition> 
INNER JOIN <table4> ON <join_condition> 
...
Run Code Online (Sandbox Code Playgroud)

使用内部联接时,我不希望两个查询之间存在性能差异。我会更担心是否有适当的索引。确保连接条件可以使用索引列进行匹配。

  • “JOIN ... ON”是“INNER JOIN”的同义词,没有“ON”的“JOIN”是“CROSS JOIN”的同义词。文档:http://dev.mysql.com/doc/refman/5.0/en/join.html (5认同)