布尔术语谓词
在联接操作中,尽可能选择布尔条件而非非布尔条件,以提高查询性能。
布尔术语谓词是一个简单或复合谓词,当它对特定行求值为假时,会使整个WHERE子句对该特定行求值为假。
例如,在以下查询中, P1、 P2 和 P3 是简单的谓词:
SELECT * FROM T1 WHERE P1 AND (P2 OR P3);
- P1 是一个简单的布尔术语谓词。
- P2 和 是简单的非布尔术语谓词。 P3
- P2 OR 是一个布尔复合谓词。 P3
- P1 AND ( OR ) 是一个布尔复合谓词。 P2 P3
单索引处理通常需要布尔术语谓词来匹配索引访问。 Db2 针对单个列重写简单的非布尔条件或条件,以使用布尔条件IN列表。 例如,以下语句被改写为:
SELECT * FROM T1 WHERE C1 = ? OR C1 = ?;以下陈述是结果:SELECT * FROM T1 WHERE C1 IN (?, ?)更复杂的布尔术语谓词可能需要多索引访问或范围列表访问。
在联接操作中,布尔术语谓词比非布尔术语谓词更早地拒绝行。
建议 :对于联接操作,尽可能选择布尔术语谓词而非非布尔术语谓词。