HelloDBA [English]
搜索Internet 搜索 HelloDBABA
  Oracle技术站。email: fuyuncat@gmail.com  MSN: fuyuncat@hotmail.com   acoug  acoug 

CBO全表扫描代价计算公式推导(4)

[English]

作者: fuyuncat

来源: www.HelloDBA.com

日期: 2009-08-01 15:03:34

分享到  新浪微博 腾讯微博 人人网 i贴吧 开心网 豆瓣 淘宝 推特 Facebook GMail Blogger Orkut Google Bookmarks

3.4.11.           过滤字段最大位置(混合数据类型过滤字段)

但是,当使用混合数据类型字段作为过滤字段做测试时,发现MAXFILPOS在公式中的作用并非一元线性的,不过其产生的变化还是有规律的:

date

NUMBER

MAXFILPOS

5

EFFCOLNUMS

5

FLTCOLNUM

resc_cpu

CPU_B

CPU_A

TYPFAC

 

1

387121440

7121440

380000000

380

 

2

402121440

7121440

395000000

395

 

3

402871440

7121440

395750000

395.75

 

4

402908940

7121440

395787500

395.7875

 

5

402910815

7121440

395789375

395.78938

 

date

NUMBER

MAXFILPOS

4

EFFCOLNUMS

5

FLTCOLNUM

resc_cpu

CPU_B

CPU_A

TYPFAC

 

1

368121440

7121440

361000000

361

19

2

382171440

7121440

375050000

375.05

19.95

3

382873940

7121440

375752500

375.7525

19.9975

4

382909060

7121440

375787620

375.78762

19.99988

date

NUMBER

MAXFILPOS

3

EFFCOLNUMS

5

FLTCOLNUM

resc_cpu

CPU_B

CPU_A

TYPFAC

 

1

349121440

7121440

342000000

342

19

2

362221440

7121440

355100000

355.1

19.95

3

362876440

7121440

355755000

355.755

19.9975

仔细观察上面的数据,不难找到规律:

F(MAXFILPOS)–F(MAXFILPOS-1) = 20–20^(1-FLTCOLNUM)

将这一等式代入公式12中,公式修正为:

公式13TYPFAC = 130 + EFFCOLNUMS + 5*19 - (5-MAXFLTCOLPOS)*(20–20^(1-FLTCOLNUM)) + COLTYPEFAC1*(1/20)^0 + COLTYPEFAC2*(1/20)^1 + … + COLTYPEFACn*(1/20)^(FLTCOLNUM-1)

        = 225 + EFFCOLNUMS - (5-MAXFLTCOLPOS)*(20–20^(1-FLTCOLNUM)) + COLTYPEFAC1*(1/20)^0 + COLTYPEFAC2*(1/20)^1 + … + COLTYPEFACn*(1/20)^(FLTCOLNUM-1)

        = 225 + EFFCOLNUMS -100 + MAXFLTCOLPOS*20 + (5-MAXFLTCOLPOS)*20^(1-FLTCOLNUM) + COLTYPEFAC1*(1/20)^0 + COLTYPEFAC2*(1/20)^1 + … + COLTYPEFACn*(1/20)^(FLTCOLNUM-1)

        = 125 + EFFCOLNUMS + MAXFLTCOLPOS*20 + (5-MAXFLTCOLPOS)*20^(1-FLTCOLNUM) + COLTYPEFAC1*(1/20)^0 + COLTYPEFAC2*(1/20)^1 + … + COLTYPEFACn*(1/20)^(FLTCOLNUM-1)

3.4.12.           有效字段数(混合数据类型过滤字段)

除了MAXFLTCOLPOS外,在测试数据中还发现一个因子违反之前公式的变化规律,那就是有效字段数EFFCOLNUM

date

NUMBER

MAXFILPOS

3

EFFCOLNUMS

5

FLTCOLNUM

resc_cpu

CPU_B

CPU_A

TYPFAC

 

1

349121440

7121440

342000000

342

 

2

362221440

7121440

355100000

355.1

 

3

362876440

7121440

355755000

355.755

 

date

NUMBER

MAXFILPOS

3

EFFCOLNUMS

4

FLTCOLNUM

resc_cpu

CPU_B

CPU_A

TYPFAC

 

1

348121440

7121440

341000000

341

1

2

362171440

7121440

355050000

355.05

0.05

3

362873940

7121440

355752500

355.7525

0.0025

date

NUMBER

MAXFILPOS

3

EFFCOLNUMS

3

FLTCOLNUM

resc_cpu

CPU_B

CPU_A

TYPFAC

 

1

347121440

7121440

340000000

340

1

2

362121440

7121440

355000000

355

0.05

3

362871440

7121440