为什么此WHERE子句会降低查询性能?

时间:2019-05-17 17:11:15

标签: sql db2

我有一个外部查询,该查询汇总了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

1 个答案:

答案 0 :(得分:0)

为什么WHERE子句会降低性能?

因为它更改了执行计划。您需要查看查询的解释计划。

为什么会更改执行计划?因为数据库得到了这样的想法(在这种情况下是错误的想法),即附加过滤可以使替代执行计划更好。

你能做什么?提示是解决此问题以获得最佳计划的一种方法。