日期:2014-05-17  浏览次数:20950 次

使用B树建立数据库索引,每个节点里面包含的数据记录是什么?单纯一个地址引用还是数据记录完全信息?
问题如题!
我知道使用B树建立的索引的时候,非叶子节点里面会包含这些信息:
键、子树引用,数据记录。
这个数据记录是什么意思呢?
是数据库里面某个表中某个记录在内存中的地址还是该记录的完整信息?
谢谢!


还想问一下,一般是用B-树还是用B+树建索引?

------解决方案--------------------
嗯?和数据库有关吧,Oracle数据库一般的索引都是B+吧,记不清了
这个不是偶们能够控制修改的,是数据库内部的数据结构。

索引节点应该包含的是作为索引的字段的值和物理地址rowid,
当然非叶子节点还需要包含父指针/子指针之类的咚咚,具体确实不清楚,当年C/C++都没有学好
羞愧ing

------解决方案--------------------
索引和内存有什么必然联系?
索引也是存储在硬盘/磁带/something else上的,只有读取索引时候才会读取到内存中阿,rowid 应该占据6-8个字节吧(不是特别肯定,大概的一个数值)怎么会占据一个内存页?


------解决方案--------------------
B树中的每个节点都占一个内存页?
谁说的啊?
Oracle好像不开源的说,源码估计是没有希望看的
楼主考虑去甲骨文,或者相关的数据库优化软件开发公司。他们才有可能有源码


------解决方案--------------------
Oracle中最通用的索引是B+索引,或者叫B*TREE索引。
这种索引的节点分三种:root节点,非叶子节点,叶子节点。
非叶子节点存储的是键值和指向下级非叶子节点或叶子节点的物理位置的指针。
叶子节点存储的是键值和对应记录的物理位置的指针。
B+索引不会包含数据记录。