如何使用加入

时间:2015-07-20 10:57:47

标签: sql sql-server database sql-server-2008 query-optimization

我有一个查询,它在540万条记录表中应用内部联接。此查询花费的时间超过9小时。

我想优化查询,我该如何处理。

查询是 -

Delete top(1000)
FROM table1 fact
INNER JOIN
table2 uu
ON uu.User1 = fact.User1
Where uu.Is_Archived$ = 'true' 
and fact.Snapshot_Date$Snapshot_Date$ > uu.User_End_Date$

连接中使用的列是整数,两列具有相同的数据类型。并且有许多无效的记录。

任何帮助都会很棒。感谢!!!

1 个答案:

答案 0 :(得分:0)

假设您的delete确实是:

Delete top(1000) from fact
    FROM table1 fact INNER JOIN
         table2 uu
         ON uu.User1 = fact.User1
     Where uu.Is_Archived$ = 'true' and
           fact.Snapshot_Date$Snapshot_Date$ > uu.User_End_Date$;

然后索引应该有助于查询。一种可能性是:table1(Snapshot_Date$Snapshot_Date$, User1)table2(User1, IsArchived$)。另一个是table2(IsArchived$, User1)table1(User1, Snapshot_Date$Snapshot_Date$)