编写谓词时,要按表、按谓词类型从最受限到最不受限来编写。编写一个有多个谓词的SQL语句时,首先要写从结果集中筛选大多数数据的谓词作为第一个谓词。通过按从最受限到最不受限的顺序排列谓词,后面的谓词筛选的数据会更少。
默认地,DB2优化工具会根据某些谓词类型选择它想最先处理的谓词。不过,如果查询包含多个谓词,而且这些谓词都是同一类谓词,就会按照编写的顺序来执行这些谓词。正是因为这个原因,正确地排列谓词的顺序很重要,要把筛选最多数据的谓词放在谓词列表的最前面。
这不算是一个能显著改善性能的调优技巧,无法帮助查询从几小时优化到几分钟或者从几分钟优化到几秒,不过,对SQL语句调优时,每一个小小的改善都会有帮助。
DB2总是先应用索引谓词(而不论这些谓词的具体位置是什么)。接下来,不论按什么顺序编写,都会按以下顺序应用Stage 1不可索引谓词:
1.Equal谓词
2.Range谓词
3.In列表
4.Like谓词
最后再应用Stage 2谓词。