什么是最好的方式来做一个不在'查询150k id的列表

时间:2016-02-26 15:32:45

标签: sql-server-2008-r2 ssms notin

使用 - SQL Server 2008 R2 - SQL server management studio查询窗格 我有一个excel电子表格,其中包含超过150k个唯一ID,用于我们的动态2011数据库中的联系人。我需要查询数据库中不在150k列表中的所有其他记录。做这个的最好方式是什么?我需要查询的记录对它们没有任何活动,所以我很难弄清楚如何将它们拉出来。可以在150k物品上使用NOT IN吗?我应该将150k ID添加到临时表中然后使用NOT IN temptable吗?还是有更好的方法

1 个答案:

答案 0 :(得分:0)

您可以使用not in,但性能可能非常差。

你最好做一个not exists或左连接过滤掉未加入的结果。您可能希望以某种方式将要排除的记录拉入数据库,或者通过导入到表中,或者写出临时/变量表来进行工作。但无论如何......

示例表:

myRecordsToExclude
myTable

示例:

select t.*
from myTable t
where not exists (
    select 1
    from myRecordsToExclude e
    where t.id = e.id
)

select t.*
from myTable t
left join myRecordsToExclude e on t.id = e.id
where e.id is null