我有一个外部查询,该查询汇总了AS400上的三个DB2数据库的结果。内部联合查询在大约2分钟内运行。添加外部摘要时,查询性能不受影响。但是,在外部摘要步骤中添加WHERE子句会使性能提高10分钟以上。因为我不知道发生了什么,所以我每次都杀死查询。知道为什么添加WHERE子句会严重影响性能吗?整个查询看起来像这样(对不起,伪代码,实际查询超过700行):
SELECT
field1,
field2,
SUM(field3) as my_sum
FROM
(complex set of three queries with results unioned together from three different databases - runs in about 2 minutes when executed on its own)
WHERE field1 in('string1','string2','string3')
GROUP BY
field1,
field2
答案 0 :(得分:0)
为什么WHERE
子句会降低性能?
因为它更改了执行计划。您需要查看查询的解释计划。
为什么会更改执行计划?因为数据库得到了这样的想法(在这种情况下是错误的想法),即附加过滤可以使替代执行计划更好。
你能做什么?提示是解决此问题以获得最佳计划的一种方法。