仅在Condition为true时选择 - SQL Server 2008

时间:2013-12-17 13:18:20

标签: sql sql-server-2008 informatica

我有一个ODS表和一个Audit表。我需要在从ODS表中删除任何内容之前检查Audit表。现在,我正在这样做(下图);在我的执行计划中创建一个嵌套循环。我相信SQL服务器引擎正在检查每条记录的Audit表(WHERE子句)。有没有写这个,所以只检查一次Audit表,我可以在没有嵌套循环的情况下对我的主键进行索引查找?

我在Informatica源限定符中使用它。

SELECT
*Primary Key*
FROM
ODS_Table
WHERE
1 = (SELECT CASE WHEN 
      *Condition*
      THEN 1 ELSE 0 END
      FROM AUDIT_TABLE)

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以改为使用JOIN

SELECT Primary Key
FROM ODS_Table
    JOIN AUDIT_TABLE ON *Condition*

如果满足ODS_Table上的条件,这将确保来自AUDIT_TABLE的行仅返回