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);

相关文章: