【发布时间】:2015-08-05 11:12:55
【问题描述】:
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 条记录。
【问题讨论】:
-
十万 - 请使用 国际知名 计量单位 - 千、百万、十亿......查询的图形执行计划?
标签: sql sql-server query-optimization sql-tuning query-tuning