【问题标题】:MySQL Performance: JOIN ON vs WHERE [duplicate]MySQL 性能:加入与 WHERE [重复]
【发布时间】:2011-07-17 08:55:00
【问题描述】:

可能的重复:
MySQL: Inner join vs Where
Explicit vs implicit SQL joins

当我们使用“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> 
.... 

使用 WHERE

SELECT <field names> 
FROM <table names list separated by comma> 
WHERE <join_condition> 
AND <join_condition> 
AND <join_condition> 
.... 

所以不确定使用 JOIN ON 或 WHERE 子句是否会有所不同。请协助。

【问题讨论】:

标签: mysql performance join


【解决方案1】:

我怀疑使用“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> 
...

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

【讨论】:

【解决方案2】:

下面是对这两种方法的一个很好的分析:SQL left join vs multiple tables on FROM line?

这个解释是笼统的,我不太清楚MySQL在这件事上是做什么的;但无论哪种方式,关键是 JOIN 总是更加明确和清晰,并且可以从一个引擎移动到另一个引擎,而查询逻辑不会发生重大变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-14
    • 2019-09-16
    • 2011-03-13
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多