http://docs.oracle.com/cd/B28359_01/server.111/b28318/schema.htm#CNCPT811
本文内容
- 唯一和不唯一索引(Unique and Nonunique Indexes)
- 可见和不可见索引(Visible and Invisible Indexes)
- 组合索引(Composite Indexes / concatenated index)
- 索引和键(Indexes and Keys)
- 索引和 Nulls(Indexes and Nulls)
- 基于函数的索引(Function-Based Indexes)
- 索引如何存储(How Indexes Are Stored)
- 索引唯一扫描(Index Unique Scan)
- 索引范围扫描(Index Range Scan)
- 键压缩(Key Compression)
- 反向键索引(Reverse Key Indexes)
- Bitmap 索引(单表)
- Bitmap 连接索引(多个表)
- 参考资料
本文主要是描述关于索引的一些问题和概念。就我个人而言,自学 Oracle 的过程,就是不断为自己澄清某个概念,无论是看英文,还是看中文资料,当发现一个自己不熟悉,或不知道如何翻译的词时,就会试图去了解……然后思考如下几个问题:
1,为什么会出现这个概念/术语
2,这个概念/术语解决什么问题
3,这个概念/术语是如何实现的
4,这个概念/术语适用于什么场景
5,相似的概念/术语间有什么区别
无论何种技术,它们的存在都是为了解决我们实际中遇到的问题。知道概念/术语,往往比知道一个 SQL 语句如何写更重要。
索引是与表和聚类相关的可选结构。你可以创建,也可以不创建。可以在一个表的一个或多个列上创建索引,以加速 SQL 语句在该表上的执行。索引比没有索引能更快地定位信息,Oracle 数据库对表数据提供更快的访问路径。正确使用索引是减少磁盘 IO 的重要手段。
可以为表创建很多索引,只要列的组合对每个索引都不一样。如果你指定列的不重复地不同组合,那么你可以利用一些相同列创建很多索引。例如,下面语句是有效的组合:
ON employees (last_name, job_id);
CREATE INDEX employees_idx2 ON employees (job_id, last_name);