【发布时间】:2013-11-18 09:47:17
【问题描述】:
试图修复别人的代码。 NOT IN 会破坏性能。 我把它拿出来替换为不存在,我得到了不同的结果。 注释掉的 not in 就在我的不存在之上。 有人看到我在这里做什么愚蠢的事情吗?
IF @ProcessComplete = 1
BEGIN
-- PRINT 'Group-Complete'
INSERT INTO @ProcessIDTable
SELECT DISTINCT(ProcessID)
FROM vPortalInbox
WHERE GroupUserIDs LIKE '%,' + CAST(@UserID AS VARCHAR(MAX)) + ',%'
AND StepOwnerID IS NULL
--AND ProcessID NOT IN (SELECT ProcessID FROM @ProcessIDTable)
And not exists (SELECT ProcessID FROM @ProcessIDTable)
【问题讨论】:
-
它们做两件不同的事情。特别是,您的
NOT EXISTS()不涉及SELECTed 的行。 -
你真的应该用能反映你试图寻求帮助的问题的标题提出问题。 “我在做一些愚蠢的事情”不是你想问的问题。
-
在这种特殊情况下,您甚至可以使用 except:
select ProcessID from ... except select ProcessID from @ProcessIDTable。
标签: sql not-exists notin