SQL:优化联合查询以获取更新/插入的行

时间:2017-05-07 18:06:14

标签: sql sql-server left-join union

我想基于在任何更新/插入时修改的日期时间列捕获其值已更改的所有行。

有一个父表和几个子表。

我正在使用UNION来做这件事,但它很慢。我有什么选择?如何更好地构建查询以在更短的时间内运行?

Tables -  
ParentT - Rowid(PK),column1,last_update 
ChildT1 - column1,last_update,parent_rowid(FK to ParentT.Rowid) 
ChiltT2 - column1,last_update,parent_rowid(FK to ParentT.Rowid) 
ChildT3 - column1,last_update,parent_rowid(FK to ParentT.Rowid)

查询:

SELECT Rowid FROM ParentT
WHERE Rowid IN (
   SELECT Rowid FROM ParentT pT WHERE pT.last_update > somedatetime
   UNION
   SELECT Parent_rowid FROM ChildT1 cT1 WHERE cT1.last_update > somedatetime
   UNION
   SELECT Parent_rowid FROM ChildT2 cT2 WHERE cT2.last_update > somedatetime
   UNION
   SELECT Parent_rowid FROM ChildT3 cT3 WHERE cT3.last_update > somedatetime
)

0 个答案:

没有答案