SELECT
T2.Entity1Id, T1.Entity1Id
FROM
T1
FULL OUTER JOIN
T2 ON T1.c2 = T2.c2 AND T1.c1 = T2.c1 AND T1.c3 = 1
WHERE
((T1.c1 = 123 ) OR (T2.c1 = 123))
AND (T1.c3 = 1 OR T1.c3 IS NULL)
上記のクエリは SQL Server 2014 で 12 秒かかります。クエリを調整するアイデアはありますか? C1、C2、C3 列にインデックスがあります。
観察: 上記のクエリで、OR から条件を削除すると (つまり、
SELECT
T2.Entity1Id, T1.Entity1Id
FROM
T1
FULL OUTER JOIN
T2 ON T1.c2 = T2.c2 AND T1.c1 = T2.c1 AND T1.c3 = 1
WHERE
(T1.c1 = 123) AND (T1.c3 = 1 OR T1.c3 IS NULL)
次に、0秒で結果を返します。
各テーブルには約 500,000 のレコードがあります。