SQL Server" NOT IN"花了很多时间

时间:2018-02-27 03:27:18

标签: sql-server

我使用SQL Server中的SQL查询每周加载数据。为避免重复,我一直使用NOT IN来检查我插入的表格。

此查询需要很长时间,偶尔会挂起。每周只插入几千行

INSERT INTO [ST_FACT]
    SELECT 
        H.WK_DATE,
        H.[M_Code]
    FROM 
        T_FACT H
    WHERE 
        H.WK_DATE NOT IN (SELECT DISTINCT(WK_DATE) 
                          FROM ST_FACT 
                          WHERE RETAILER LIKE '%MSI%')

1 个答案:

答案 0 :(得分:3)

我建议使用NOT EXISTS

INSERT INTO [ST_FACT]
    SELECT H.WK_DATE, H.[M_Code]
    FROM T_FACT H
    WHERE NOT EXISTS (SELECT 1
                      FROM ST_FACT f
                      WHERE H.WK_DATE = f.WK_DATE AND RETAILER LIKE '%MSI%'
                     );

为此,请在ST_FACT(WK_DATE, RETAILER)上创建索引。