B-Tree索引

[b]B-Tree在数据结构中有两种含义:[/b]
[list]
[*]Binary Tree(二叉树)
[*]Blance Tree (平衡树)
[/list]

[b]哪什么是二叉树?什么又是平衡树呢?[/b]
二叉树是指一个父节点最多含有两个子节点(可以含有一个子阶段,比如左二叉树、右二叉树),形如
[img]http://dl.iteye.com/upload/picture/pic/93624/97188c88-8e53-3ce5-a43e-9d7749f357c4.jpg[/img]
而平衡树是指一个父节点可以有多个子节点,而且每个子节点含义相同个数子节点活叶子节点,且叶子节点在同一级别,形如
[img]http://dl.iteye.com/upload/picture/pic/93626/a976cb39-00b2-38c8-85fc-e88ce9130918.jpg[/img]
B-Tree Index采用的是平衡树,形如
[img]http://dl.iteye.com/upload/picture/pic/93628/c03947b5-e99c-3ef3-9975-4ca8f6956f50.bmp[/img]
索引在数据库中是单独的对象,它是由Oracle自动管理的。
比如
CREATE TABLE t(id int,sex char(1),name char(10));

col object_name format a20;

SELECT object_name,object_type FROM user_onjects;


OBJECT_NAME OBJECT_TYPE
---------------- -------------
T TABLE

 CREATE INDEX t_idx1 on t(id);


SELECT object_name,object_type FROM user_onjects;

OBJECT_NAME OBJECT_TYPE
---------------- -------------
T TABLE
T_IDX1 INDEX


由此可知,建立索引对数据库查询提高了很高速度,但是不是建立索引越多,对数据库就越有利呢?回答是否定的,原因是索引越多,数据库表在做INSERT,UPDATE,DELETE时,ORACLE自动维护索引的开销比较大,这样会影响数据库的性能。

数据库索引查询的原理(如下图),其中最下叶子节点存放的是真实数据,采用的是双向链表结构完成的关联,这样在做这样的查询语句时,
SELECT * FROM t WHERE id > 23 and id < 45;
它实际上是先找最小值23,然后根据链表一直找到45,这就是所谓的“[b]索引范围扫描[/b]”
[img]http://dl.iteye.com/upload/picture/pic/93630/61873523-ce66-3411-9a86-5b57b8ce133d.bmp[/img]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值