日期:2014-05-16  浏览次数:20369 次

Oracle DB 索引
索引是数据库对象,可以通过创建索引来提高一些查询的性能。在你创建主键或唯一约束条件时,服务器会同时自动创建索引。
  • 索引
索引具有以下特点:
? 是一个方案对象
? Oracle Server 可用来通过指针加快行检索速度
? 可通过使用快速路径访问方法迅速找到数据来减少磁盘的输入/ 输出(I/O) 
? 与建立索引的表无关
? 由Oracle Server 自动使用和维护

Oracle Server  索引是一个方案对象,可以通过指针加快行检索速度。可以显式创建索引,也可以自动创建索引。如果没有在列上建立索引,则会对整个表进行扫描。
使用索引可以直接而快速的访问表中的行。其作用是通过使用索引路径快速找到数据来减少磁盘的I/O。索引由Oracle Server  自动使用和维护。创建索引之后,就不需要用户直接执行任何操作了。
索引在逻辑上和实际上都独立于建立索引的表。这意味着可以在任何时候创建或删除索引,而不会对基表或其它索引产生任何影响。
注:在删除表时,会另外删除相应的索引。



  • 如何创建索引
? 自动创建:如果在表定义中定义了PRIMARY KEY 或UNIQUE 约束条件,则会自动创建一个唯一的索引。
? 手动创建:用户可以通过对列创建非唯一的索引来加快行访问速度。

可以创建两种类型的索引。
? 唯一索引:如果你在表中定义的列具有PRIMARY KEY 或UNIQUE 约束条件,则Oracle Server  会自动创建此类型的索引。索引的名称和约束条件的名称相同。
? 非唯一索引:这种类型的索引可以由用户创建。例如,可以通过在查询中为联接创建一个FOREIGN KEY 列索引来提高检索速度。
注:可以手动创建唯一索引,但是建议你创建唯一约束条件,这样可隐式创建唯一索引。

  • 创建索引
? 对一个或多个列创建索引:

CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>

      ON <schema>.<table_name>

           (<column_name> | <expression> ASC | DESC,
            <column_name> | <expression> ASC | DESC,...)