执行计划中COST值的计算
时间:2010-08-31 来源:osdba
nest loop:
cost = outer access cost + (inner access cost * outer cardinality)
Sort merge join: The cost of a merge join = access cost of A + access cost of B + (sort cost of A +sort cost of B)
Hash join: cost = (outer access cost * # of hash partitions) + inner access cost
集的势(cardinality) = MAX(集的势因子 * 记录数, 1) 1.对于建立了索引(可以是复合索引)的字段,如果查询条件是“=”,字段的集的势计算公式如下: 集的势因子 = 1 / 字段上的唯一值数 集的势(cardinality) = MAX( 记录数/字段上的唯一值数, 1)
2.如果索引字段查询条件是“<”“>”“<=”“>=”,则计算公式为, 集的势因子 = (1 / 字段上的唯一值数) + (1/记录数)
3.如果索引字段查询条件是in,则计算公式为, 集的势因子 = in条件中的变量数 / 字段上的唯一值数
4.如果索引字段查询条件是“<>”,则计算公式为, 集的势因子 = (1 – (1/字段上的唯一值数))\ 这时的集的势值也是这个字段上可以达到的最大集的势值。
5.当查询条件为not in时,计算就更为复杂了。它是根据not in中的变量值按阶计算的。 集的势因子 = (1 – (1/字段上的唯一值数))^(not in中变量数)
6.非索引字段 当查询条件为 “=”、“in” 时,非索引字段的集的势因子是, 集的势因子 = 1/100
7.非索引字段 多字段 集的势因子 = 字段1的集的势因子 * 字段2的集的势因子 * … *字段n的集的势因子
8. 对于全表扫描,如果没有查询条件时, 集的势因子 = 1
Sort merge join: The cost of a merge join = access cost of A + access cost of B + (sort cost of A +sort cost of B)
Hash join: cost = (outer access cost * # of hash partitions) + inner access cost
集的势(cardinality) = MAX(集的势因子 * 记录数, 1) 1.对于建立了索引(可以是复合索引)的字段,如果查询条件是“=”,字段的集的势计算公式如下: 集的势因子 = 1 / 字段上的唯一值数 集的势(cardinality) = MAX( 记录数/字段上的唯一值数, 1)
2.如果索引字段查询条件是“<”“>”“<=”“>=”,则计算公式为, 集的势因子 = (1 / 字段上的唯一值数) + (1/记录数)
3.如果索引字段查询条件是in,则计算公式为, 集的势因子 = in条件中的变量数 / 字段上的唯一值数
4.如果索引字段查询条件是“<>”,则计算公式为, 集的势因子 = (1 – (1/字段上的唯一值数))\ 这时的集的势值也是这个字段上可以达到的最大集的势值。
5.当查询条件为not in时,计算就更为复杂了。它是根据not in中的变量值按阶计算的。 集的势因子 = (1 – (1/字段上的唯一值数))^(not in中变量数)
6.非索引字段 当查询条件为 “=”、“in” 时,非索引字段的集的势因子是, 集的势因子 = 1/100
7.非索引字段 多字段 集的势因子 = 字段1的集的势因子 * 字段2的集的势因子 * … *字段n的集的势因子
8. 对于全表扫描,如果没有查询条件时, 集的势因子 = 1
相关阅读 更多 +