ITPub博客

首页 > 数据库 > Oracle > Oracle OCP(25):索引

Oracle OCP(25):索引

原创 Oracle 作者:Ryan_Bai 时间:2019-02-02 10:15:07 0 删除 编辑

概述

数据库中索引(Index)的概念与目录的概念非常类似。如果某列出现在查询的条件中,而该列的数据是无序的,查询时只能从第一行开始一行一行的匹配。创建索引就是对某些特定列中的数据排序,生成独立的索引表。在某列上创建索引后,如果该列出现在查询条件中,Oracle会自动的引用该索引,先从索引表中查询出符合条件记录的ROWID,由于ROWID是记录的物理地址,因此可以根据ROWID快速的定位到具体的记录,表中的数据非常多时,引用索引带来的查询效率非常可观。

  • 优点

    • 提高对表的查询速度;

    • 对表有关列的取值进行检查。

  • 缺点

    • 对表进行insert,update,delete处理时,由于要表的存放位置记录到索引项中而会降低一些速度。

  • 注意

    • 一个基表不能建太多的索引;

    • 空值不能被索引

    • 只有唯一索引才真正提高速度,一般的索引只能提高30%左右。

一、创建索引

  • 语法

    CREATE [unique] INDEX [user.]index
    ON [user.]table (column [ASC | DESC] [,column
    [ASC | DESC] ] ... )
    [CLUSTER [scheam.]cluster]
    [INITRANS n]
    [MAXTRANS n]
    [PCTFREE n]
    [STORAGE storage]
    [TABLESPACE tablespace]
    [NO SORT
    
  • 参数

    • UNIQUE:指定索引列上的值必须是唯一的。称为唯一索引。

    • schema ORACLE模式,缺省即为当前帐户

    • index 索引名

    • table 创建索引的基表名

    • column 基表中的列名,一个索引最多有16列,long列、long raw 列不能建索引列

    • DESC、ASC 缺省为ASC即升序排序

    • CLUSTER 指定一个聚簇(Hash cluster不能建索引)

    • INITRANS、MAXTRANS 指定初始和最大事务入口数

    • PCTFREE 索引数据块空闲空间的百分比(不能指定pctused)

    • STORAGE 存储参数,同create table 中的storage.

    • Tablespace 表空间名

    • NOSORT 不(能)排序(存储时就已按升序,所以指出不再排序)

二、删除索引

DROP INDEX index;

三、修改索引

ALTER [UNIQUE] INDEX [user.]index
[INITRANS n]
[MAXTRANS n]
REBUILD
[STORAGE n]

三、例句

--平衡树索引(B-tree index)
CREATE INDEX fname_idx ON employees (first_name);
 
--唯一索引(B-tree cluster index)
CREATE unique INDEX fname_idx ON employees (first_name);
 
--复合索引
CREATE INDEX fname_id_idx ON employees (first_name, employees_id);
 
--反向键索引(reverse key indexes)
CREATE INDEX fname_idx ON employees (first_name) REVERSE;
 
--取消反向索引
ALTER INDEX fname_idx REBUILD NOREVERSE;

四、查看索引信息

  • 索引信息,包含索引类型,唯一性,索引作用等表的信息

    • DBA_INDEXES

    • ALL_INDEXES

    • USER_INDEXES

  • 索引列信息  包括索引上的列的排序方式等信息

    • DBA_IND_COLUMNS

    • ALL_IND_COLUMNS

    • USER_IND_COLUMNS

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31490526/viewspace-2565409/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle 10g OCE、OCA、OCP; Oracle 11g OCP、OCM; MySQL 5.6 OCP; Oracle 11g OCP讲师; 屈臣氏首席DBA;

注册时间:2017-09-18

  • 博文量
    52
  • 访问量
    19892