设为首页 收藏本站
查看: 860|回复: 0

[经验分享] oracle索引(1)——B-TREE索引

[复制链接]

尚未签到

发表于 2016-7-31 08:34:34 | 显示全部楼层 |阅读模式
  
  1.B-tree索引
  oracle的一个通用索引,创建时是默认的索引选项。
  可以是一个列的(简单)索引,也可以是组合/复合(多个列)的索引。B树索引最多可以包括32列。
  
  1)根节点:一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点。
  2)分支节点:最小的键值前缀,用于在(本块的)两个键值之间做出分支选择,指向包含所查找键值的   子块的指针。
  所有的 键值-ROWID 对都与其左右的兄弟节点链接,并按照(key,ROWID)的顺序排序
  3)叶子节点:数据行的键值(key value)、键值对应数据行的 ROWID
  
DSC0000.jpg       说明:对于分支节点块(包括根节点块)来说,其所包含的索引条目都是按照顺序排列的(缺省是升序   排列,也可以在创建索引时指定为降序排列)。
  每个索引条目(也可以叫做每条记录)都具有两个字段。
  第一个字段表示当前该分支节点块下面所链接的索引块中所包含的最小键值;
  第二个字段为四个字节,表示所链接的索引块的地址,该地址指向下面一个索引块。
  在一个分支节点块中所能容纳的记录行数由数据块大小以及索引键值的长度决定。
  比如从上图一可以看到,对于根节点块来说,包含三条记录,分别为(0 B1)、(500 B2)、     (1000 B3),它们指向三个分支节点块。
  其中的0、500和1000分别表示这三个分支节点块所链接的键值的最小值。
  而B1、B2和B3则表示所指向的三个分支节点块的地址。
  
  对于叶子节点块来说,其所包含的索引条目与分支节点一样,都是按照顺序排列的(缺省是升序 排列,也可以在创建索引时指定为降序排列)。
  每个索引条目(也可以叫做每条记录)也具有两个字段。
  第一个字段表示索引的键值,对于单列索引来说是一个值;而对于多列索引来说则是多个值组合 在一起的。
  第二个字段表示键值所对应的记录行的ROWID,该ROWID是记录行在表里的物理地址。
  如果索引是创建在非分区表上或者索引是分区表上的本地索引的话,则该ROWID占用6个字节;
  如果索引是创建在分区表上的全局索引的话,则该ROWID占用10个字节。
  
   技巧:索引列的值都存储在索引中。因此,可以建立一个组合(复合)索引,这些索引可以直接满足查询, 而不用访问表。这就不用从表中检索数据,从而减少了I/O量。
  
      B-tree 特点:适合与大量的增、删、改(OLTP)
                           不能用包含OR操作符的查询;
                           适合高基数的列(唯一值多,比如主键字段,每行都是唯一值)
                           典型的树状结构;
                           每个结点都是数据块;
                           大多都是物理上一层、两层或三层不定,逻辑上三层;
                           叶子块数据是排序的,从左向右递增;
                           在分支块和根块中放的是索引的范围;

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251459-1-1.html 上篇帖子: Oracle中几个日期相关的计算 下篇帖子: oracle函数之start with connect by
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表