OCP学习:DDL和模式对象003

索引

索引有两个功能:
1 强制实施主键约束和唯一约束。
2 提高性能

索引是约束机制的一部分。索引对性能而言至关重要,可以大大提高查询效率。
索引可以实现排序,无须使用Order BY等字段。
索引在联接表的时候可以提高性能。

索引类型:

1.B*树索引

B表示平衡(Balance),是一个树形结构。树的根节点指向第二级别的多个节点,第二级别的节点又指向第三级别的多个节点,以此类推。树的必须深度主要取决于表的行数,以及索引键值的长度。
B*树结构十分有效,如果深度大小于三级或四级,则说明索引键十分长,或表包含数十亿行。如果情况并非如此,则需要重建索引。

2.位图索引
位图索引将与每个键值关联的rowid存储为位图。位图的合并速度极快,可使用AND、OR和NOT操作符的任意组合,基于很多列上的很多条件,实现复杂的布尔操作。与B*树索引相比,位图索引的一个特别好处在于它们包含NULL。就位图索引而言,NULL只不过是另一个具有自己的位图的不同值而已。
一般,在具备以下条件时使用位图索引:

  • 列的基数(不同值的个数)小。
  • 表中的行数多。
  • 列用于布尔代数运算。

3.索引类型选项
在创建索引时,可以应用6个常用选项:

  • 唯一或非唯一(Unique or non-unique)
  • 反向键(Reverse key)
  • 压缩(Compressed)
  • 符合(Composite)
  • 基于函数(Function based)
  • 升序或降序(Ascending or descending)
    所有这6个选项都可以应用于B* 索引,只有后三个选项可用于位图索引。

创建和使用索引:

基本语法:

    CREATE [UNIQUE | BITMAP] INDEX [ schema.]indexname ON [schema.]tablename (column [, column...] );

Oracle 服务器应该可以作出有关使用索引的最佳决策,但是,如果Oracle服务器的做法有误,编程人员可以在代码中嵌入指令(成为优化器提示),以便强制 使用(或不使用)某些索引。

修改和删除索引:

DROP INDEX [ schema.]indexname;
CREATE [UNIQUE | BITMAP] INDEX [ schema.]indexname ON [schema.]tablename (column [, column...] );

ALTER INDEX 命令属于数据库管理范畴,通常用于调整索引的物理属性,不用于调整开发人员关注的逻辑属性,不能用于修改索引。若需要修改索引属性,则必须删除和重新创建索引。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值