Oracle 9i索引

2/9/2008来源:Oracle教程人气:7147

  索引是若干数据行的要害字的列表,查询数据时,通过索引中的要害字可以快速定位到要访问的记录所在的数据块,从而大大减少读取数据块的I/O次数,因此可以显著提高性能。

索引的原理

    下面通过查询数据表“scott.student”的ROWID列为例,在【SQLPlus Worksheet】中执行下面的语句,查询结果如图7.38所示。
    ―――――――――――――――――――――――――――――――――――――
    select rowid,student_id,name,PRofessional,birthday,Director_id from scott.student;
    ―――――――――――――――――――――――――――――――――――――
    【参见光盘文件】:\第7章\ selectrowid.sql。
Oracle 9i索引
    以数据表“scott.student”的索引为例,下面的数据就是以“student_id”数据列为例建立索引后的部分数据。
    ―――――――――――――――――――――――――――――――――――――
    ROWID STUDENT_ID
    ------------------ ----------
    AAAH2oAAIAAAABSAAA 20020101
    AAAH2oAAIAAAABSAAJ 20020102
    AAAH2oAAIAAAABSAAK 20020103
    AAAH2oAAIAAAABSAAL 20020104
    AAAH2oAAIAAAABSAAN 20030102
    AAAH2oAAIAAAABSAAO 20030103
    AAAH2oAAIAAAABSAAP 20030104
    ―――――――――――――――――――――――――――――――――――――
    
Oracle 9i支持的索引

    Oracle 9i中的索引可以分为两大类:B-树索引和位图索引。
Oracle 9i索引
表7.9 B-树索引的分类 名称 含义 Non-Unique 非惟一索引,默认的B-树索引,索引列值可以不是惟一的 Unique 惟一索引,在创建索引时指定“UNIQUE”要害字可以创建惟一索引。当建立“主码约束条件”时也会建立惟一索引,索引列值是惟一的 Reverse Key 反向要害字索引,通过在创建索引时指定“REVERSE”要害字,可以创建反向要害字索引,被索引的每个数据列中的数据都是反向存储的,但仍然保持原来数据列的次序 Function-based 基于函数的索引,对数据列使用表达式,按照表达式结果来创建B-树索引的各节点,适合特定的,经常使用该表达式进行类似查询的数据表的索引的组织     2. 位图索引
    对“scott.student”数据表的数据列“professional”建立位图索可能的实例如下。
    ―――――――――――――――――――――――――――――――――――――
    记录号 professional取值 位图饕?br>     1      软件工程         1
    2      计算机安全       2
    3      图形图像         3
    7      Web安全          2
    ―――――――――――――――――――――――――――――――――――――

主码自动建立的索引

    (1)如图7.40所示。

Oracle 9i索引
    (2)出现如图7.41所示的编辑索引的【一般信息】选项卡。
Oracle 9i索引

如何创建索引

    (1)如图7.42所示。
Oracle 9i索引
    (2)出现如图7.43所示的创建索引的【一般信息】选项卡。
Oracle 9i索引
    (3)切换到图7.44所示的创建索引的【分区】选项卡。
    (4)切换到图7.45所示的创建索引的【存储】选项卡。

(图片较大,请拉动滚动条观看)
    (5)切换到图7.46所示的创建索引的【选项】选项卡。
    (6)成功创建索引后出现如图7.47所示界面。

(图片较大,请拉动滚动条观看)
    (7)在【企业治理器】中可以查看创建的索引,如图7.48所示。
Oracle 9i索引
    (8)上述创建索引对应的SQL代码如下。
    ―――――――――――――――――――――――――――――――――――――
    CREATE INDEX "SCOTT"."姓名字段索引"
        ON "SCOTT"."STUDENT"("NAME")
        TABLESPACE "INDX";
    ―――――――――――――――――――――――――――――――――――――
    【参见光盘文件】:\第7章\ createindex.sql。
    (9)读者也可以直接在【SQLPlus Worksheet】中执行createindex.sql文件完成索引的创建,如图7.49所示。
Oracle 9i索引

如何删除索引

    (1)如图7.50所示。
    (2)出现如图7.51所示的【索引删除确认】界面。

(图片较大,请拉动滚动条观看)