oracle 索引项的组成,oracle索引介绍(图文详解)

对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分。

索引分类:

逻辑分类

single column or concatenated     对一列或多列建所引

unique or nonunique    唯一的和非唯一的所引,也就是对某一列或几列的键值(key)是否是唯一的。

Function-based    基于某些函数索引,当执行某些函数时需要对其进行计算,可以将某些函数的计算结果事先保存并加以索引,提高效率。

Doman    索引数据库以外的数据,使用相对较少

物理分类

B-Tree :normal or reverse key   B-Tree索引也是我们传统上常见所理解的索引,它又可以分为正常所引和倒序索引。

Bitmap  : 位图所引,后面会细讲

B-Tree 索引

B-Tree index 也是我们传统上常见所理解的索引。B-tree (balance tree)即平衡树,左右两个分支相对平衡。

B-Tree index

Root为根节点,branch 为分支节点,leaf 到最下面一层称为叶子节点。每个节点表示一层,当查找某一数据时先读根节点,再读支节点,最后找到叶子节点。叶子节点会存放index entry (索引入口),每个索引入口对应一条记录。

Index entry 的组成部分:

Indexentry entry  header    存放一些控制信息。

Key column length     某一key的长度

Key column value      某一个key 的值

ROWID    指针,具体指向于某一个数据

创建索引:

复制代码 代码如下:

用户登录:

SQL> conn as1/as1

Connected.

创建表:

SQL> create table dex (id int,sex char(1),name char(10));

Table created.

向表中插入1000条数据

SQL> begin

for i in 1..1000

loop

insert into dex values(i,'M','chongshi');

end loop;

commit;

end;

/

PL/SQL procedure successfully completed.

查看表记录

SQL> select * from dex;

ID SE NAME

---------- -- --------------------

... . .....

M  chongshi

M  chongshi

M  chongshi

M  chongshi

M  chongshi

M  chongshi

M  chongshi

M  chongshi

M  chongshi

M  chongshi

rows selected.

创建索引:

SQL> create index dex_idx1 on dex(id);

Index created.

注:对表的第一列(id)创建索引。

查看创建的表与索引

SQL> select object_name,object_type from user_objects;

OBJECT_NAME                  OBJECT_TYPE

--------------------------------------------------------------------------------

DEX                           TABLE

DEX_IDX1                      INDEX

索引分离于表,作为一个单独的个体存在,除了可以根据单个字段创建索引,也可以根据多列创建索引。Oracle要求创建索引最多不可超过32列。

复制代码 代码如下:

SQL> create index dex_index2 on dex(sex,name);

Index created.

SQL>  select object_name,object_type from user_objects;

OBJECT_NAME                           OBJECT_TYPE

--------------------------------------------------------------------------------

DEX                                       TABLE

DEX_IDX1                                 INDEX

DEX_INDEX2                               INDEX

这里需要理解:

编写一本书,只有章节页面定好之后再设置目录;数据库索引也是一样,只有先插入好数据,再建立索引。那么我们后续对数据库的内容进行插入、删除,索引也需要随之变化。但索引的修改是由oracle自动完成的。

上面这张图能更加清晰的描述索引的结构。

跟节点记录0至50条数据的位置,分支节点进行拆分记录0至10.......42至50,叶子节点记录每第数据的长度和值,并由指针指向具体的数据。

最后一层的叶子节是双向链接,它们是被有序的链接起来,这样才能快速锁定一个数据范围。

如:

复制代码 代码如下:

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值