Sql server 2008 r2 做';不在';查询150k id的列表';s

Sql server 2008 r2 做';不在';查询150k id的列表';s,sql-server-2008-r2,ssms,notin,Sql Server 2008 R2,Ssms,Notin,使用-SQL Server 2008 R2-SQL Server management studio查询窗格。 我有一个excel电子表格,其中包含我们dynamics 2011数据库中联系人的超过150k的唯一id。我需要查询数据库中不在150k列表中的所有其他记录。最好的方法是什么?我需要查询的记录上没有任何活动,因此我正在努力找出如何将其取出。是否可以在150k项目上使用NOT IN?我是否应该将150k ID添加到临时表中,然后在诱惑中使用NOT?或者有没有更好的方法您可以在中使用,但性

使用-SQL Server 2008 R2-SQL Server management studio查询窗格。

我有一个excel电子表格,其中包含我们dynamics 2011数据库中联系人的超过150k的唯一id。我需要查询数据库中不在150k列表中的所有其他记录。最好的方法是什么?我需要查询的记录上没有任何活动,因此我正在努力找出如何将其取出。是否可以在150k项目上使用NOT IN?我是否应该将150k ID添加到临时表中,然后在诱惑中使用NOT?或者有没有更好的方法

您可以在中使用
,但性能可能会非常差

您最好执行
不存在
或左连接过滤掉未连接的结果。您可能希望以某种方式将要排除的记录拉入DB,或者通过导入到表中,或者写出一个临时/变量表以便工作。但是无论如何

示例表:

myRecordsToExclude
myTable
例如:

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


我宁愿选择临时桌子。因为,如果你把所有的150K记录都放在NOT in中,那就很麻烦,也很难调试。第二件事是不在的表现。因此,建议是1)创建一个临时表并加载所有excel数据。2) 在表GV之间不存在的地方使用一组在其他表中不存在的数据。祝你好运谢谢你,我会试试这个,虽然我以前没有用过临时桌子,所以这将是一个很好的学习曲线。非常感谢你,这个工作做得很好,我学到了很多
select t.*
from myTable t
left join myRecordsToExclude e on t.id = e.id
where e.id is null