0

正如我们所知 - “复杂条件的 INNER JOIN 显着增加了执行时间,请参考这个

考虑查询

(
   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"
)

或类似-(SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.P3 = Table2.P3 where Table1.P1 LIKE "abc" OR Table2.p2 LIKE "xyz")

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

4

1 回答 1

0

请在 JOIN 中使用 Union 而不是 'OR' 条件。

选择 ... 从表 1

在 Table1.P1 上的 INNER JOIN Table2 = Table2.P1

联合所有

选择 ... 从表 1

在 Table1.P2 上的 INNER JOIN Table2 = Table2.P2 AND Table1.P1 <> Table2.P1

于 2017-07-11T09:11:35.660 回答