在WHERE子句中具有多个OR运算符的INNER JOIN会增加执行时间

时间:2017-07-11 08:13:26

标签: mysql join inner-join where-clause or-operator

我们知道 - "具有复杂条件的INNER JOIN会大大增加执行时间please refer this"

考虑查询

(
   SELECT ... 
   FROM Table1
   INNER JOIN Table2 ON Table1.P1 = Table2.P1 OR Table1.P2 = Table2.P2
)

这里将通过"嵌套循环进行比较"因此,如果我们有像

这样的查询,执行时间会更长
(
    SELECT ... 
    FROM Table1 
    INNER JOIN Table2 ON Table1.P3 = Table2.P3 where Table1.P1 = "abc" OR 
    Table2.p2 = "xyz"
)

或者喜欢 -    (         选择 ...         从表1         INNER JOIN Table2 ON Table1.P3 = Table2.P3其中Table1.P1 LIKE" abc"要么         Table2.p2 LIKE" xyz"     )

比仅通过嵌套循环进行比较(对于列P1和P2)?

1 个答案:

答案 0 :(得分:0)

请使用联盟代替'或'加入条件。

选择......    从表1

INNER JOIN Table2 ON Table1.P1 = Table2.P1

UNION All

选择......    从表1

INNER JOIN Table2 ON Table1.P2 = Table2.P2 AND Table1.P1<> Table2.P1