我想基于在任何更新/插入时修改的日期时间列捕获其值已更改的所有行。
有一个父表和几个子表。
我正在使用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
)