gpt4 book ai didi

sql - sql server 查询中的 UNION ALL 与 OR 条件

转载 作者:行者123 更新时间:2023-12-04 13:11:57 24 4
gpt4 key购买 nike

我必须根据表上的不存在条件选择一些行。如果我使用如下所有的联合,它会在不到 1 秒的时间内执行。

SELECT 1 FROM dummyTable
WHERE NOT EXISTS
(

SELECT 1 FROM TABLE t
WHERE Data1 = t.Col1 AND Data2=t.Col2

UNION ALL

SELECT 1 FROM TABLE t
WHERE Data1 = t.Col2 AND Data2=t.Col1

)

但是如果我使用 OR 条件,则需要将近一分钟的时间,因为 SQL 服务器正在执行表惰性池。有人可以解释一下吗?
SELECT 1 FROM dummyTable
WHERE NOT EXISTS
(

SELECT 1 FROM TABLE t
WHERE ( (Data1 = t.Col1 AND Data2=t.Col2) OR (Data1 = t.Col2 AND Data2=t.Col1))
)

最佳答案

查询计划还受表中行数的影响。表中有多少行 t ?

你也可以试试:

SELECT 1 FROM dummyTable
WHERE NOT EXISTS
(
SELECT 1 FROM TABLE t
WHERE Data1 = t.Col1 AND Data2=t.Col2
)
AND NOT EXISTS
(
SELECT 1 FROM TABLE t
WHERE Data1 = t.Col2 AND Data2=t.Col1
)

或(针对 SQL-Server 进行了更正)这将使用索引:
WITH tt AS                               <---- a temp table with 2 rows
( SELECT Data1 AS Col1, Data2 AS Col2
UNION
SELECT Data2 AS Col1, Data1 AS Col2
)
SELECT 1 FROM dummyTable
WHERE NOT EXISTS
(
SELECT 1
FROM TABLE t
JOIN tt
ON tt.Col1 = t.Col1 AND tt.Col2=t.Col2
)

关于sql - sql server 查询中的 UNION ALL 与 OR 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5639710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com