2013-10-10 121 views
-1

我有这个查询在SQL Server中运行速度非常慢。请建议优化它以加快运行速度。寻找SQL Server查询优化

  • TABLE_A具有100'000'000行
  • TABLE_B具有1'000'000行

两个表对IDModify_DateSource列非聚集索引。

查询:

Insert into TABLE_A  
    select * from RABLE_B B 
    Where NOT Exists (Select 1 
        From TABLE_A A 
        Where B.ID = A.ID 
         And B.Modify_Date = A.Modify_Date 
         And B.Source = A.Source) 
+1

如果你没有不已:加** **好聚集键两个表! –

回答

4
INSERT INTO TABLE_A 
     SELECT B.* 
     FROM TABLE_B B 
       LEFT JOIN TABLE_A A ON B.ID = A.ID 
            AND B.Modify_Date = A.Modify_Date 
            AND B.Source = A.Source 
     WHERE A.ID IS NULL 
+0

左下的多连接也运行缓慢。 – dev777

+0

为什么你认为我提到的查询运行速度慢,查询更新速度会更快。 – dev777

+0

然后你应该在[Modify_Date]和[Source]上创建一个索引 – Zyku