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可能要建立太多的链接,不适合
索引的作用: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