`
keepwork
  • 浏览: 333701 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多

 开发者博客www.developsearch.com

 

索引在逻辑上物理上都独立于关联表中的数据,在任何时候都可以创建或删除索引,

而不会影响基表或其它索引。

 

l    创建索引

CREATE INDEX 索引名 ON 表名 (字段1,字段2)

CREATE INDEX rt_user_sys ON

IMS_RT_MANAGEDUSER_SYSTEM (SYSTEM_ID,MANAGEDUSER_ID)

 

l    查看某个表中的索引

select * from all_indexes where table_name = 'IMS_RT_MANAGEDUSER_SYSTEM'

 

l    删除索引

drop index idxname

注:索引是不可更改的,想更改必须删除重新建。

 

 

唯一索引、组合索引、反向键索引、位图索引和基于函数的索引 :

 

l    唯一索引:

此索引可以确保在定义索引的列中,表的任意两行的值都不相同。

        Oracle自动为表的主键列创建唯一索引。

        可以使用Create UNIQUE INDEX命令明确地创建唯一索引。

        示例14:在itemfile表的itemcode列上创建了一个名为item_index的唯一索引。

        Create UNIQUE INDEX item_index ON itemfile(itemcode);

 

l    组合索引:

组合索引是在表中的多个列上创建的索引。组合索引中列的顺序是任意的,不必是表中相邻的列。

        创建组合索引时,应注意定义中使用的列的顺序。通常,最频繁访问的列应放置在列表的最前面。

        示例15:在itemfile表上创建了一个名为comp_index的组合索引,

        当查询该表的的WHERE子句同时包含这两个列或只包含p_category列时,

        以下示例语句创建的索引将用于检索数据,但如果单独使用itemrate列,则索引不能用于检索数据。

        Create INDEX comp_index ON itemfile(p_category,itemrate);

 

l    反向键索引:

通常建立在一些值连续增长的列上,例如列中的值是是由序列产生的情况。

        示例16:在itemfile表上创建了一个名为rev_index的反向键索引。注意使用REVERSE关键字。

        Create INDEX rev_index ON itemfile(itemcode) REVERSE;

        示例17:使用关键字NOREVERSE可以将反向键索引重建为标准索引。

        ALTER INDEX rev_index REBUILD NOREVERSE;

        注意:不能将标准索引重建为反向键索引。

 

l    位图索引:

如果某个列的值重复超过一百次,则可以考虑在该列上创建位图索引。

        示例18itemcodeorder_detail表中的低基数列,因为货物编码在大多数订单中都是重复的,

        因此适合在该列上创建位图索引。

        Create BITMAP INDEX bit_ind1 ON order_detail(itemcode);

        位图索引不应当用在频繁发生的INSERT,UPDATE,DELETE操作的表上。位图索引最适合于数据仓库和决策支持系统。

 

l    索引组织表:

索引组织表与在一个或多个列上建立索引的普通表相似,但它无需为表和索引维护两个

        单独的存储空间,数据库系统仅维护一个索引,该索引包含相应的已编码键值和与其关联的列值。

        示例19:使用ORGANIZATION INDEX子句来创建索引组织表。

        Create table ind_org_tab

        (

           vencode NUMBER(4) primary key,   注意:primary key是创建索引组织表所必需的。不允许使用分区。

           venname VARCHAR2(20)

        )

        organization index;

        索引组织表适合于通过主键来访问数据。

   

l    基于函数的索引:

如果在WHERE子句的算术表达式或函数中已经包含了某个列,则不会使用该列上的索引。

        不能在表达式包含任何聚合函数,LOB列、REF列或包含LOBREF的对象类型上创建基于函数的索引。

        示例20vennamevendor_master表的一个列,用于存储供应商的姓名,

        假定所有供应商的姓名都以混合大小写的形式存储(如:John SmithDave JonesTony Greig等等)

        同时假定我们经常需要根据供应商的姓名来查询表的数据。由于姓名是以混合大小写的形式存储的,

        因此可能很难给出姓名的正确大小写形式。可以创建如下索引:

        Create INDEX vn_ind ON vendor_master(UPPER(venname));

        示例21:演示如何使用前面创建的基于函数的索引检索数据。

        select * from vendor_master where UPPER(venname)='SMALL';

   

        要创建基于函数或表达式的索引,必须具有QUERY REWRITE系统权限。

 

l    索引中的分区:

与对表进行分区类似,Oracle也允许对索引分区。牵引分区可以存储在不同的表空间中。

        局部分区索引:Oracle为表的每个分区建立一个独立的索引。

        示例22:先创建分区表

        Create table order_mast

        (

           orderno number(4),

           venname varchar2(20)

        )

        partition by range(orderno)

        (

           partition oe1 values less than(1000),

           partition oe2 values less than(2000),

           partition oe3 values less than(maxvalue)

        );

        接着创建局部索引:

        create INDEX myind ON order_mast(orderno) LOCAL;

      

        全局分区索引:是指在分区表或非分区表上创建的索引。

        示例23:在上面创建的分区表上创建全局索引

        create INDEX glb_ind ON order_mast(orderno) GLOBAL

        partition by range(orderno)

        (

            partition ip1 values less than(1500),

            partition ip2 values less than(maxvalue)

        );

        在有3个分区的表上创建2个分区的索引。注意:不能在散列分区或子分区建立全局索引。

 

        全局非分区索引:全局分区索引是在分区表上创建的全局索引,它类似于非分区表上的索引,

        索引的结构不会被分割。

 

分享到:
评论

相关推荐

    jdbc-oracle-thinjdbc-oracle-thin

    ### JDBC-Oracle-Thin 驱动介绍与配置详解 #### 一、JDBC-Oracle-Thin 概述 在数据库连接技术中,Java Database Connectivity (JDBC) 是一种用于执行 SQL 语句的标准 Java API,可以为多种关系数据库提供统一访问...

    geoserver-1.6.5-oracle-plugin.zip

    《GeoServer 1.6.5与Oracle插件详解》 GeoServer是一款开源的地理信息系统(GIS)服务器,它能够发布地图数据并提供WMS、WFS等OGC标准服务。GeoServer 1.6.5是其历史版本,虽然较新版本功能更加强大,但在某些特定...

    ORACLE索引详解及SQL优化

    总的来说,Oracle索引详解及SQL优化是一个深度广度兼具的主题,需要结合实际数据库结构和业务需求,灵活应用各种索引类型和优化策略,以实现数据库性能的最大化。通过深入学习和实践,你可以更好地驾驭Oracle数据库...

    oracle 创建和删除索引

    ### Oracle 创建和删除索引详解 #### 一、Oracle索引概述 在Oracle数据库中,索引是一种重要的数据结构,用于提高数据检索速度。通过创建索引,可以显著提升查询性能,尤其是在处理大型数据表时更为明显。索引类似...

    oracle-详解知识点。

    以上介绍了Oracle数据库管理系统中的一些基础操作和高级功能,包括数据库的创建与删除、表的操作、索引的创建与删除、视图的操作、常用的SQL操作(查询、插入、删除、更新)、集合操作、JOIN操作、GROUP BY子句的...

    Oracle 分区表 分区索引 索引分区详解

    虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。

    详解Oracle数据库中文全文索引

    ### 详解Oracle数据库中文全文索引 Oracle数据库的全文检索技术已经非常成熟和完善,其中Oracle Text使得Oracle 9i具备了强大的文本检索能力和智能化的文本管理能力。在不同的Oracle版本中,这一技术有着不同的名称...

    ORACLE-admin-12c-newfeatures-activity-guide-3

    #### 重要知识点详解 ##### 1. 多租户架构(Multitenant Architecture) - **定义**:多租户架构允许在一个物理数据库内创建多个逻辑数据库(称为可插拔数据库或PDBs),每个PDB都像一个独立的数据库一样运行。 - ...

    Oracle 索引 详解

    Oracle 索引详解 Oracle 索引是数据库性能优化的重要工具,它可以大大加快数据的检索速度,提高系统的性能。但是,索引也存在一些缺陷,例如创建索引和维护索引要耗费时间,索引需要占物理空间,等等。在本文中,...

    oracle分区表分区索引.docx

    Oracle 分区表分区索引详解 Oracle 分区表分区索引是 Oracle 数据库中的一种重要机制,它可以提高数据的存储和查询效率。下面将详细介绍 Oracle 分区表分区索引的类型、分类、创建方法和维护方式。 一、分区表和...

    Oracle-SQL优化.doc

    ### Oracle-SQL优化知识点详解 #### 一、Oracle优化器的选择与配置 Oracle数据库提供了三种主要的优化器供用户选择: 1. **基于规则的优化器(RULE)**: - 此优化器完全依赖于预设的规则来确定查询的最佳执行...

    Expert One-on-One Oracle - Thomas Kyte.pdf

    - **内存结构详解**:深入了解Oracle内存结构的组成和工作原理。 - **进程管理**:解析Oracle数据库中的各种进程及其作用。 #### 五、并发控制与锁定 - **锁的概念**:解释锁的作用和分类。 - **DML锁**:用于...

    Oracle 分区表 分区索引

    ### Oracle 分区表与分区索引详解 #### 一、Oracle分区概述 在Oracle数据库中,分区技术是一种非常有效的管理大型表和索引的方法。通过将一个大的表或索引分成多个较小的部分(分区),可以显著提高查询性能,并...

    oracle-sql-the-essential-reference

    ### Oracle SQL:核心参考知识点详解 #### 一、概述 《Oracle SQL:核心参考》(Oracle SQL: The Essential Reference)是一本由David C. Kreines撰写的书籍,于2000年由O'Reilly出版社出版。该书为Oracle SQL的...

    详解Oracle数据库中文全文索引.docx

    "Oracle数据库中文全文索引" Oracle数据库中文全文索引是Oracle数据库的一种功能强大的文本检索技术,通过使用Oracle Text,使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。Oracle Text是Oracle9i采用...

    Oracle索引详解

    Oracle索引是数据库管理系统中用于加速数据检索的关键数据结构,尤其在处理大量数据查询时,其效率至关重要。本文将深入探讨Oracle中的B树索引,包括它的概念、创建、删除和修改,以及如何理解其工作原理。 首先,...

    Oracle索引详解[PPT]

    本篇内容将深入解析Oracle索引的基本概念、原理以及类型。 首先,索引是可选的表对象,其主要目的是提升查询速度。尽管索引可以显著提高数据检索的效率,但同时也占用额外的存储空间,并可能影响数据插入、更新和...

Global site tag (gtag.js) - Google Analytics