本文主要是介绍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 命令属于数据库管理范畴,通常用于调整索引的物理属性,不用于调整开发人员关注的逻辑属性,不能用于修改索引。若需要修改索引属性,则必须删除和重新创建索引。
这篇关于OCP学习:DDL和模式对象003的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!