【发布时间】:2015-02-09 16:32:18
【问题描述】:
我正在使用 SQL Server。在 SQL Query 中处理大量数据时面临问题。我想从 ITEM 表中选择那些不在我给定列表中的记录。
让我详细说明。
我有 ITEM 表,其中 ITEM_CODE 作为列。
它包含数百万条记录。
并从其他来源填充一些项目代码,例如文件。
所以我想从 ITEM 表中选择那些不在该填充列表中的记录。
喜欢,
SELECT ITEM_CODE FROM ITEM WHERE ITEM_CODE NOT IN ('I1', 'I2', 'I3',.......);
使用 IN 是一项繁琐的任务,需要花费大量时间。然后我用其他方式,像这样,
SELECT ITEM_CODE FROM ITEM WHERE NOT (ITEM_CODE = 'I1' OR ITEM_CODE = 'I2' AND .....)
- 注意:....表示数百万个参数。
这种方式也需要很多时间。我用的另一种方式,
SELECT T.ITEM_CODE FROM ITEM T LEFT JOIN
(SELECT ITEM_CODE FROM ITEM T1
WHERE T1.ITEM_CODE ='I1' OR T1.ITEM_CODE ='I2') AS T2
on T.ITEM_CODE = T2.ITEM_CODE WHERE T2.ITEM_CODE IS NULL
这种方式提高了一点性能,但仍然不能令人满意。
有什么方法可以快速完成吗?
请给我一些解决方案。
任何答案都将是可观的。
谢谢。
【问题讨论】:
-
你应该避免使用像 lac 这样的印度词,不是每个人都能理解。
-
LAC到底是什么?
-
它的 10 万 @DavidG 你试过为你的查询运行解释计划吗?
-
哦,我明白了。因此,您最好将这些值插入数据库表(永久或临时)并将该表连接到您的 ITEM 表。
-
这百万个参数从何而来?
标签: sql-server