Sql server 2008 r2 做';不在';查询150k id的列表';s
使用-SQL Server 2008 R2-SQL Server management studio查询窗格。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?或者有没有更好的方法您可以在中使用,但性
我有一个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