Monday, January 21, 2008

DBA讲B-tree

偶然问他我看到的"inverted index“概念,他告诉我这是常用的。我又问到B(alanced) Tree。热心讲解如下(据说要附发票)

索引的作用:1。select 2.排序

记录是在block间乱序排列,所以为了避免全表扫描,用最少3层的b-tree (root page, non-leaf-page, leaf page)来存

通常的索引都是reverted(一个值比如male对应多个rowid)

rowid=block#,row#

RootPage: 47(1)xx(y) 47以前都在第一个non-leaf page
non-leaf 6(1)10(2)47(3) rowid=6以前的都在第一个leaf page

leaf pages:123456 78910 47 (一些rowid的顺序排列,指向最终存储的block和rowid)

对gender(cardinality很低,只有2)

Oracle能分析sql, 用optimizer,确认application path (APS

建pk时自动建立unique index on PK columns

BitMap位图索引:
Record# 1 2 3 4
Gender=M 1 0 1 0
Gender=F 0 1 0 1
Gender=U 0 0 0 0

Bitmap是为数据仓库设计的,条目也很少。适合低基数数据(性别),count*特别快;适合集中读取。对于某些跨多列的查询,b-tree可能要建立太多的链接,不适合

0 Comments:

Post a Comment

<< Home