对 150k id 的列表进行 'NOT IN' 查询的最佳方法是什么
What is the best way to do a 'NOT IN' query on list of 150k id's
使用 - SQL Server 2008 R2 - SQL 服务器管理工作室查询窗格。
我有一个 excel 电子表格,其中包含我们动态 2011 数据库中超过 15 万个联系人的唯一 ID。我需要查询数据库中所有其他不在 150k 列表中的记录。做这个的最好方式是什么?我需要查询的记录上没有 activity 所以我正在努力弄清楚如何将它们拉出来。是否可以在 150k 项上使用 NOT IN?我应该将 150k id 添加到临时 table 中然后使用 NOT IN temptable 吗?或者有什么更好的方法
您可以使用 not in
,但性能可能会很差。
您最好执行 not exists
或左联接以过滤掉未联接的结果。您可能希望通过导入 table 或写出 temporary/variable table 以某种方式将要排除的记录拉入数据库。但无论如何...
示例 tables:
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
使用 - SQL Server 2008 R2 - SQL 服务器管理工作室查询窗格。
我有一个 excel 电子表格,其中包含我们动态 2011 数据库中超过 15 万个联系人的唯一 ID。我需要查询数据库中所有其他不在 150k 列表中的记录。做这个的最好方式是什么?我需要查询的记录上没有 activity 所以我正在努力弄清楚如何将它们拉出来。是否可以在 150k 项上使用 NOT IN?我应该将 150k id 添加到临时 table 中然后使用 NOT IN temptable 吗?或者有什么更好的方法
您可以使用 not in
,但性能可能会很差。
您最好执行 not exists
或左联接以过滤掉未联接的结果。您可能希望通过导入 table 或写出 temporary/variable table 以某种方式将要排除的记录拉入数据库。但无论如何...
示例 tables:
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