日期:2014-05-16  浏览次数:20462 次

Oracle B树索引简介(B-Tree Index)
B树索引,就是我们最常用的普通索引(传统索引)。

简单创建方式为:create index test_id_idx on test(id)。

下面用图解释下B-Tree索引:


①:从上往下,第一层为根节点,第二层为分支节点,第三层为叶子节点(包含了列值和rowid)。

rowid 参考http://blog.csdn.net/laoshangxyc/article/details/8660900

②:当查找的时候,是这么查找的,比如要找到值11,就从跟节点开始,11在0-50中,指向分支节点最左边第一个框,就去分支节点最左边第一框中去找,发现11在11-19中指向叶子节点的左边第二个框,就去叶子节点左边第二个框去找11的值,于是找到两个11的值和响应的rowid。如果只查找索引列的值,就不用根据rowid去表中查找了,如果还要查找值11这行,其他列的值就得根据rowid去表里查找。(除了在同一聚簇中可能不唯一外,每条记录的rowid是唯一的)。
③:叶子节点还有个双向链表(如图)。在通过索引进行范围扫描时会起作用,比如要查找值10-19,如果当查找到值10的时候,不就会再从跟节点开始查找其他的值,而是根据本叶子节点链表的指向去查找其他的值。