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
阅读(1951) | 评论(0) | 转发(0) |