Chinaunix首页 | 论坛 | 博客
  • 博客访问: 858171
  • 博文数量: 150
  • 博客积分: 5123
  • 博客等级: 大校
  • 技术积分: 1478
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-06 10:03
文章分类

全部博文(150)

文章存档

2011年(2)

2010年(139)

2009年(9)

分类: Oracle

2010-08-31 17:10:27

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) |
给主人留下些什么吧!~~