Db2 BETWEEN谓词的动态估计
这更像是一个学术问题,因为我对DB2查询优化器的细节感兴趣 我有一个表,有10000条记录,没有索引。SYSCAT.TABLES中的COLCARD显示10000,名为MesFabricacao的列具有以下COLSTAT:Db2 BETWEEN谓词的动态估计,db2,Db2,这更像是一个学术问题,因为我对DB2查询优化器的细节感兴趣 我有一个表,有10000条记录,没有索引。SYSCAT.TABLES中的COLCARD显示10000,名为MesFabricacao的列具有以下COLSTAT: COLCARD HIGH2KEY LOW2KEY TABNAME COLUMN 198 198 2 CARINFO MESFABRICACAO 根据核心手册“db2perf-db2d3e1011.p
COLCARD HIGH2KEY LOW2KEY TABNAME COLUMN
198 198 2 CARINFO MESFABRICACAO
根据核心手册“db2perf-db2d3e1011.pdf”第451页,不带直方图的中间谓词的基数公式为:KEY2-KEY1/HIGH2KEY-LOW2KEY*CARD
对于给定的查询,从STATS.CARINFO中选择COUNT*,其中mesfabricao介于1和3之间,使用db2exfmt,我看到的过滤因子为0.0151258,我无法解释为什么要使用QO进行估计
有人解释DB2为什么应用这个过滤因子吗?我正在使用DB210.1.0.0
db2exfmt的输出
谓词:
2) Sargable Predicate,
Comparison Operator: Less Than or Equal (<=)
Subquery Input Required: No
Filter Factor: 0.0151258
Predicate Text:
--------------
(Q1.MESFABRICACAO <= 3)
3) Sargable Predicate,
Comparison Operator: Less Than or Equal (<=)
Subquery Input Required: No
Filter Factor: 1
Predicate Text:
--------------
(1 <= Q1.MESFABRICACAO)
Input Streams:
-------------
1) From Object STATS.CARINFO
Estimated number of rows: 10000
Number of columns: 2
Subquery predicate ID: Not Applicable
Column Names:
------------
+Q1.$RID$+Q1.MESFABRICACAO
Output Streams:
--------------
2) To Operator #2
Estimated number of rows: 151.258
Number of columns: 0