sql - 将表中的列值传递到 WHERE 子句
问题描述
如果这已经解决了,我深表歉意,但是我几天来一直在寻找解决方案,但在我的情况下似乎没有任何效果。
我正在尝试将我创建的临时表 (Table_A) 中的一些值传递到查询中的 WHERE 子句中。
我在查询中加入了临时表,我的 WHERE 子句如下所示: WHERE B.ID IN (Select ID from Table_A)
使用上述 WHERE 语句运行查询大约需要 45 分钟,而在不加入暂存表(表 A)并在 WHERE 子句中手动传递值的情况下运行需要 6 分钟,如下所示:
WHERE B.ID IN(值 1、值 2、值 3.. 等)
我不确定是什么导致查询运行速度慢得多。我正在尝试在包中使用修改后的查询(其中包含 Select 语句),这就是为什么我需要传递值而无需手动输入的原因。有谁知道我该如何解决这个问题?这可以在 SSIS 中完成吗?谢谢
解决方案
IN
通常优化不佳。我发现EXISTS
通常效果更好:
WHERE EXISTS (SELECT 1
FROM Table_A A
WHERE B.ID = A.ID
)
特别是,这可以利用一个索引Table_A(ID)
-- 如果ID
是主键,它会自动存在。
推荐阅读
- python - 在检测到的轮廓opencv-python中查找颜色
- c# - C# windows服务启动前复制文件
- assembly - 将数字与 x86_64 程序集中的方法相关联的最佳方法是什么
- javascript - discord bot 下一行带空格
- c# - 是否可以在中间件 Asp .Net Core 中调用 WebApi
- python - Pandas - 在分组后绘制图表的问题
- excel - 最大如果在 Power 查询中有多个条件
- html - 如何使flexbox中的第一个按钮与第二个按钮大小相同
- java - 我正在尝试在 Netbeans 12 中制作一个摆动 GUI,但是当我尝试运行它时出现了一个巨大的异常
- c# - ASP.net - 用于过滤 Gridview 的文本框输入