Oracle统计信息
Oracle数据库里的统计信息可以分为6种类型:
- 表的统计信息
- 索引的统计信息
- 列的统计信息
- 系统统计信息
- 数据字典统计信息
- 内部对象统计信息
图 1: Oracle统计信息
基于CBO成本计算的几个重要概念:
Cardinality (集的势)
含义:
Cardinality可以理解为SQL扫描后所得到的集合
计算公式:
Cardinality=MAX(Cardinality Factor * Rowcount, 1)
Cardinality Factor计算
"="查询
Cardinality Factor = 1/NUM_DISTINCT
">", "<", ">=", "<="查询
Cardinality Factor = (1/NUM_DISTINCT) + (1/NUM_ROWS)
in查询
Cardinality Factor = in_count/NUM_DISTINCT
"<>"查询
Cardinality Factor = (1 - (1/NUM_DISTINCT))
not in查询
Cardinality Factor = (1 - (1/NUM_DISTINCT)) ^ (not_in_count)
Selectivity (选择度)
含义:
Selectivity可以理解为SQL中谓词过滤结果集和报错表记录数之间的比例 -