一般来说,我有一个 SELECT 查询结合三个独立的 SELECT 查询。我在查询中使用了 EXCEPT 和 UNION 运算符。独立执行查询时,我会在 1-2 秒内收到结果,但是当使用 EXCEPT 运算符时,查询将花费数小时。
查询结构(简化后)如下:
SELECT DISTINCT FIELD_1, FIELD_2, FIELD_3 FROM MYTABLE
EXCEPT
(
SELECT DISTINCT FIELD_1, FIELD_2, FIELD_3 FROM MYTABLE WHERE XXX
UNION
SELECT DISTINCT FIELD_1, FIELD_2, FIELD_3 FROM MYTABLE WHERE YYY
)
是否有任何方法可以加快整个查询的速度,或者 EXCEPT 运算符是否通常太慢以至于应该避免?
最佳答案
您可以使用 GROUP BY
SELECT FIELD_1, FIELD_2, FIELD_3
FROM MYTABLE
GROUP BY FIELD_1, FIELD_2, FIELD_3
HAVING MAX(CASE WHEN (XXX) OR (YYY) THEN 1 ELSE 0 END) = 0
关于在查询中使用 EXCEPT 时出现 SQL Server 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594581/