【发布时间】:2011-07-01 22:12:17
【问题描述】:
我有这个需要很长时间才能运行的 Informix SQL 语句。有没有人看到任何优化它的方法,所以它不会花这么长时间?
SELECT * FROM OriginalTable WHERE type = 'S' AND flag <> 'S' INTO TEMP TempTableA;
SELECT * FROM OriginalTable WHERE type = 'Z' AND flag <> 'S' INTO TEMP TempTableB;
UPDATE OriginalTable SET flag = 'D' WHERE Serialnumber in
(
select Serialnumber from TempTableA
WHERE NOT EXISTS(SELECT * FROM TempTableB
WHERE TempTableB.Col1 = TempTableA.Col1
AND TempTableB.Col2 = TempTableA.Col2)
)
我的 OriginalTable 中有大约 3 亿行,TempTableA 有 93K 行,TempTableB 有 58K 行。
【问题讨论】:
-
你应该解释你的查询意图
-
我需要将 OriginalTable 中所有集合的标志更改为 TemptableB 中不存在具有相等 Col1 和 Col2 的条目
标签: sql optimization query-optimization informix