精华内容
下载资源
问答
  • ORACLE创建索引

    2017-11-24 11:54:00
    1. CREATE INDEX命令语法:   CREATE INDEX CREATE [unique] INDEX [user.]index ON [user.]table (column [ASC | DESC] [,column [ASC | DESC] ] ... ) [CLUSTER [scheam.]cluster] [INITRANS n] ...

    1. CREATE INDEX命令语法:

     

    CREATE INDEX
    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]
    Advanced

     

    其中:
       schema ORACLE模式,缺省即为当前帐户
       index 索引名
       table 创建索引的基表名
       column 基表中的列名,一个索引最多有16列,long列、long raw
                  列不能建索引列
       DESC、ASC 缺省为ASC即升序排序
       CLUSTER 指定一个聚簇(Hash cluster不能建索引)
       INITRANS、MAXTRANS 指定初始和最大事务入口数
       Tablespace 表空间名
       STORAGE 存储参数,同create table 中的storage.
       PCTFREE 索引数据块空闲空间的百分比(不能指定pctused)
       NOSORT 不(能)排序(存储时就已按升序,所以指出不再排序)

     
     

    2.建立索引的目的:

     

    建立索引的目的是:
    l 提高对表的查询速度;
    l 对表有关列的取值进行检查。

     

    但是,对表进行insert,update,delete处理时,由于要表的存放位置记录到索引项中而会降低一些速度。
    注意:一个基表不能建太多的索引;
          空值不能被索引
          只有唯一索引才真正提高速度,一般的索引只能提高30%左右。

     

       Create index ename_in on emp (ename,sal);

     

    例1:商场的商品库表结构如下,我们为该表的商品代码建立一唯一索引,使得在前台POS收款时提高查询速度。
    Create table good(good_id number(8) not null,/* 商品条码 */
                       Good_desc varchar2(40), /* 商品描述 */
                       Unit_cost number(10,2) /* 单价 */
                       Good_unit varchar2(6), /* 单位 */
                       Unit_pric number(10,2) /* 零售价 */
                       );

     

    注:提高查询速度的方法还有在表上建立主键,主键与唯一索引的差别
    在于唯一索引可以空,主键为非空,比如:

     

    Create table good(good_id number(8) primary key,
                        Good_desc Varchar2(40),
                        Unit_cost number(10,2),
                        Good_unit char(6),
                        Unit_pric number(10,2)
                       );

     

    §3.5.2 修改索引
    对于较早的Oracle版本,修改索引的主要任务是修改已存在索引的存储参数适应增长的需要或者重新建立索引。而Oracle8I及以后的版本,可以对无用的空间进行合并。这些的工作主要是由管理员来完成。

     

    简要语法结构如下,更详细的语法图见电子文档《Oracle8i Reference 》 中的 Alter index.

     

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

     

    其中:
    REBUILD 是 根据原来的索引结构重新建立索引,实际是删除原来的索引后再重新建立。

     

    提示:DBA经常用 REBUILD 来重建索引可以减少硬盘碎片和提高应用系统的性能。

     

    例:
    alter index pk_detno rebuild storage(initial 1m next 512k);

     

    ALTER INDEX emp_ix REBUILD REVERSE;

     
     

    Oracle8i 的新功能可以对索引的无用空间进行合并,它由下面命令完成:

     

    ALTER INDEX . . . COALESCE;

     

    例如:

     

    ALTER INDEX ename_idx COALESCE;

     

    §3.5.3 删除索引
    当不需要时可以将索引删除以释放出硬盘空间。命令如下:

     

    DROP INDEX [schema.]indexname

     

    例如:

     

    sql> drop index pk_dept;

     

    注:当表结构被删除时,有其相关的所有索引也随之被删除。

     

    §3.6 新索引类型
    Oracle8i为了性能优化而提供新的创建新类型的索引。这些新索引在下面介绍:

     

    §3.6.1 基于函数的索引
    基于函数的索引就是存储预先计算好的函数或表达式值的索引。这些表达式可以是算术运算表达式、SQL或PL/SQL函数、C调用等。值得注意的是,一般用户要创建函数索引,必须具有GLOBAL QUERY REWRITE和CREATE ANY INDEX权限。否则不能创建函数索引,看下面例子:

     

    例1:为EMP表的ename 列建立大写转换函数的索引idx :

     

    CREATE INDEX idx ON emp ( UPPER(ename));

     

    这样就可以在查询语句来使用:

     

    SELECT * FROM EMP WHERE UPPER(ename) LIKE ‘JOH%’;

     

    例2:为emp 的工资和奖金之和建立索引:
    1) 查看emp 的表结构:
    SQL> desc emp
     Name Null? Type
     ----------------------------------------- -------- ------------------
     EMPNO NOT NULL NUMBER(4)
     ENAME VARCHAR2(10)
     JOB VARCHAR2(9)
     MGR NUMBER(4)
     HIREDATE DATE
     SAL NUMBER(7,2)
     COMM NUMBER(7,2)
     DEPTNO NUMBER(2)

     

    2)没有授权就创建函数索引的提示:

     

    SQL> create index sal_comm on emp ( (sal+comm)*12, sal,comm)
     2 tablespace users storage(initial 64k next 64k pctincrease 0);
    create index sal_comm on emp ( (sal+comm)*12, sal,comm)
                                              *
    ERROR at line 1:
    ORA-01031: insufficient privileges

     

    3) 连接到DBA帐户并授权:

     

    SQL> connect sys/sys@ora816
    Connected.
    SQL> grant GLOBAL QUERY REWRITE to scott;

     

    Grant succeeded.

     

    SQL> grant CREATE ANY INDEX to scott;

     

    Grant succeeded.

     
     

    4)在连接到scott帐户,创建基于函数的索引:

     

    SQL> connect scott/tiger@ora816
    Connected.
    SQL> create index sal_comm on emp ( (sal+comm)*12, sal,comm)
     2 tablespace users storage(initial 64k next 64k pctincrease 0);

     

    Index created.

     

    1)在查询中使用函数索引:

     

    SQL> select ename,sal,comm from emp where (sal+comm)*12 >5000;

     

    ENAME SAL COMM
    ---------------------- ---------------- ----------------
    ALLEN 1600 300
    WARD 1250 500
    MARTIN 1250 1400
    TURNER 1500 0
        赵元杰 1234.5 54321

     

    §3.6.2 反向键索引
    反向键索引通过反向键保持索引的所有叶子键上的插入分布。有时,可用反向键索引来避免不平衡的索引。对于反向键索引可以进行下面操作:
    l 通过在ALTER INDEX命令后加REBUILD NOREVERSE或REBUILD REVERSE子句来使索引边为反向键索引或普通索引;
    l 采用范围扫描的查询不能使用反向键索引;
    l 位图索引不能反向;
    l 索引编排表不能反向。

     

    例1:创建一个反向键索引:
    CREATE INDEX i ON t (a,b,c) REVERSE;

     

    例2:使一个索引变为反向键索引:
    ALTER INDEX i REBUILD NOREVERSE;

     
     

    §3.6.3 索引组织表
    与普通的索引不一样,索引组织表(Index_Organized Table)是根据表来存储数据,即将索引和表存储在一起。这样的索引结构表(Index_organized table—IOT)的特点是:对表数据的改变,如插入一新行、删除某行都引起索引的更新。
    索引组织表就象带一个或多个列所有的普通表一样,但索引组织表在B-树索引结构的叶节点上存储行数据。通过在索引结构中存储数据,索引组织表减少了总的存储量,此外,索引组织表也改善访问性能。
    由于表中的行与B_树索引存放在一起,每个行都没有ROWID,而是用主键来标识。但是Oracle会“猜”这些行的位置并为每个行分配逻辑的ROWID。此外,你可以为这样的表建立第二个索引。

     

    创建索引结构表也是用CREATE TABLE 命令加ORGANIZATION INDEX关键字来实现。但是,这样的表在创建完后,你还必须为该表建立一个主键。

     

    例子:
    CREATE TABLE IOT_EXPAMPLE
    (
    Pk_col1 number(4),
    Pk_col2 varchar2(10),
    Non_pk_col1 varchar2(40),
    Non_pk_col2 date,
    CONSTRAINT pk_iot PRIMARY KEY
                     ( pk_col1, pk_col2)
    )
    ORGANIZATION INDEX
    TABLESPACE INDEX
    STORAGE( INITIAL 1M NEXT 512K PCTINCREASE 0 );

     
     
     

    索引组织表有些限制:
    l 不能使用唯一约束;
    l 必须具有一个主键;
    l 不能建立簇;
    l 不能包含LONG类型列;
    l 不支持分布和复制。
    提示:如果建立了索引组织表,则会在DBA_TABLES中的IOT_TYPE和IOT_NAME列上记录有索引组织表的信息。

     

    例1.修改索引结构表 docindex 的索引段的INITRANS参数:

     

    ALTER TABLE docindex INITRANS 4;

     

    例2.下面语句加一个的溢出数据段到索引组织表 docindex中:

     

    ALTER TABLE docindex ADD OVERFLOW;

     

    例3.下面语句为索引组织表 docindex的溢出数据段修改INITRANS参数:

     

    ALTER TABLE docindex OVERFLOW INITRANS 4;

     
     
     

    ============================================================================================================
    适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引

     

    oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引

     

    创建索引的标准语法:

     

    CREATE INDEX 索引名 ON 表名 (列名) 

     

         TABLESPACE 表空间名; 

     

    创建唯一索引:

     

    CREATE unique INDEX 索引名 ON 表名 (列名) 

     

         TABLESPACE 表空间名; 

     

    创建组合索引:

     

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

     

         TABLESPACE 表空间名; 

     

    创建反向键索引:

     

    CREATE INDEX 索引名 ON 表名 (列名) reverse

     

         TABLESPACE 表空间名; 

     
     
     

    查看文章    
    oracle 查看索引类别以及查看索引字段被引用的字段方法2008年01月04日 星期五 13:20查看索引个数和类别

     

    select * from user_indexes where table='表名' ;

     

    查看索引被索引的字段

     
     

    SQL>select * from user_ind_columns where index_name=upper('&index_name');

     

    PS:

     

    查看某表的约束条件

     
     

    SQL>select constraint_name, constraint_type,search_condition, r_constraint_name 
    from user_constraints where table_name = upper('&table_name'); 

     

    SQL>select c.constraint_name,c.constraint_type,cc.column_name 
    from user_constraints c,user_cons_columns cc 
    where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') 
    and c.owner = cc.owner and c.constraint_name = cc.constraint_name 
    order by cc.position;

     

    查看视图的名称

     
     

    SQL>select view_name from user_views;

     
    展开全文
  • CREATE INDEX -- 定义一个新索引 Synopsis CREATE [ UNIQUE ] INDEX name ON table [ USING method ] ( { column | ( expression ) } [ opclass ] [, ...] ) [ TABLESPACE tablespace ] [ WHER...

     

    CREATE INDEX -- 定义一个新索引

    Synopsis

    CREATE [ UNIQUE ] INDEX name ON table [ USING method ]
        ( { column | ( expression ) } [ opclass ] [, ...] )
        [ TABLESPACE tablespace ]
        [ WHERE predicate ]

    描述

    CREATE INDEX 在指定的表上构造一个名为 index_name 的索引。索引主要用来提高数据库性能。但是如果不恰当的使用将导致性能的下降。

    索引的键字字段是以字段名的方式声明的,或者是可选的写在一个圆括弧里面的表达式。 如果索引方式支持多个字段索引,那么我们也可以声明多个字段。

    一个索引字段可以是一个使用表的行的一个或多个字段的数值进行计算的表达式。 整个特性可用于获取对基本数据某种变形的快速访问。 比如,一个在 upper(col) 上的函数索引将允许子句 WHERE upper(col) = 'JIM' 使用索引。

    PostgreSQL 为从索引提供 B-tree,R-tree,hash(散列) 和 GiST 索引方法。 B-tree 索引方法是一个 Lehman-Yao 高并发 B-trees 的实 现。R-tree 索引方法用 Guttman 的二次分裂算法实现了标准的 R-trees。 hash(散列)索引方法是 Litwin 的线性散列的一个实现。 用户也可以定义它们自己的索引方法,但这个工作相当复杂。

    如果出现了 WHERE 子句,则创建一个部分索引。 部分索引是一个只包含表的一部分记录的索引,通常是该表中比其它部分数据更有用的部分。 比如,如果你有一个表,里面包含已上账和未上账的定单, 未上账的定单只占表的一小部分而且这部分是最常用的部分, 那么你就可以通过只在这个部分创建一个索引来改善性能。 另外一个可能的用途是用 WHERE 和 UNIQUE 强制一个表的某个子集的唯一性。 参阅 Section 11.7 探讨更多信息。

    在 WHERE 子句里用的表达式只能引用下层表的字段,但是它可以使用所有字段,而不仅仅是被索引的字段。 目前,子查询和聚集表达式也不能出现在WHERE里。

    索引定义里的所有函数和操作符都必须是immutable,(不变的)也就是说, 它们的结果必须只能依赖于它们的输入参数,而决不能依赖任何外部的影响(比如另外一个表的内容或者当前时间)。 这个约束确保该索引的行为是定义完整的。要在一个索引上使用用户定义函数,请记住在你创建它的时候把它标记为immutable的函数。

    参数

     

    UNIQUE

    令系统检测当索引创建时(如果数据已经存在)和每次添加数据时表中是否有重复值。 如果插入或更新的值会导致重复的记录时将生成一个错误。

    name

    要创建的索引名。这里不能包含模式名; 索引总是在同一个模式中作为其父表创建的。

    table

    要索引的表名(可能有模式修饰)。

    method

    用于索引的方法的名字。可选的名字是 btree, hashrtree,和 gist。缺省方法是 btree

    column

    表的列/字段名。

    expression

    一个基于该表的一个或多个字段的表达式。 这个表达式通常必须带着圆括弧包围写出,如语法中显示那样。 不过,如果表达式有函数调用的形式,那么圆括弧可以省略。

    opclass

    一个关联的操作符表。参阅下文获取细节。

    tablespace

    创建索引所在的表空间。如果没有声明,则使用 default_tablespace 的表空间, 如果 default_tablespace 是空字串,则使用数据库的缺省表空间。

    predicate

    为一个部分索引定义约束表达式。

    注意

    参阅 Chapter 11 获取有关何时使用索引,何时不使用索引, 以及它们哪种情况下是有用的信息。

    目前,只有 B-tree 和 gist 索引方法支持多字段索引。 缺省时最多可以声明 32 个键字(这个限制可以在制作 PostgreSQL 时修改)。 目前只有 B-tree 支持唯一索引。

    可以为索引的每个列/字段声明一个 操作符表。 操作符表标识将要被该索引用于该列/字段的操作符。 例如, 一个四字节整数的 B-tree 索引将使用 int4_ops 表; 这个操作符表包括四字节整数的比较函数。 实际上,该域的数据类型的缺省操作符表一般就足够了。 某些数据类型有操作符表的原因是,它们可能有多于一个的有意义的顺序。 例如,我们对复数类型排序时有可能以绝对值或者以实部。 我们可以通过为该数据类型定义两个操作符表,然后在建立索引的时候选择合适的表来实现。 有关操作符表更多的信息在 Section 11.8 和 Section 32.14 里。

    使用 DROP INDEX 删除一个索引。

    缺省时索引不会用于 IS NULL 子句。这种场合下使用索引的最好方法是用 IS NULL 谓词创建一个部分索引。

    例子

    在表films上的 title字段创建一个 B-tree 索引:

    CREATE UNIQUE INDEX title_idx ON films (title);

     

    在表 films 的字段 code 上创建一个索引, 并且让索引存在于表空间 indexspace上:

    CREATE INDEX code_idx ON films(code) TABLESPACE indexspace;

     

    兼容性

    CREATE INDEX 是 PostgreSQL 语言扩展。 在 SQL92 中没有 CREATE INDEX 命令。

     

    ================================================

     

     

    给oracle数据表建立索引 
    按照一般的说法,一个数据表如果数据量超过了几百条,就要考虑建立索引了。拖了这么久,今天终于给我们的一些变大了的数据表建立了索引。 

    首先,查看目前已经建立的索引 
    select index_name from all_indexes where table_name = 'PICTURE'; 
    果然比较弱智,只有系统给主键自建的索引:SYS_C55001 
    还犯了一个错误,一般情况下,oracle是不管大小写的,但上面查询语句里面的table_name必须大写,如果写成'picture'则是没有记录。 

    接着,建立索引。 
    create index picture_album_idx on picture (aid); 
    create index picture_user_idx on picture (userid); 
    create index picture_cat_idx on picture (cid); 

    第三,再重复第一步,验证一下,是否成功。 

    第四, 感觉一下,浏览相册时,速度是否快了一点。 
    因为理论上是应该快一点。 
    ----------------------- 
    eg: 
    select index_name from all_indexes where table_name = 'TB_PUT_APPROVE'; 

    select * from TB_PUT_APPROVE t 
           
    create index TB_PUT_APPROVE_approveid on TB_PUT_APPROVE(approveid)

    展开全文
  • oracle 索引常用命令

    千次阅读 2011-04-06 09:34:00
    1.创建索引 create [unique]index index_name on table_name(col_1,col_2,...) tablespace tabspace_name; 2.改变索引的存储参数 alter index index_name pctfree 30 storage(initial 200k next 200k); 3.给索引手工...

     

    展开全文
  • ORACLE创建管理索引

    2013-11-22 11:08:15
    ORACLE索引管理之 索引管理的... 插入表数据之后再创建索引 针对合理的表和列创建索引 对索引列的顺序进行排列来提升性能 限制每个表的索引的个数 删除不再需要的索引 估计索引的大小并指定存储参数 为每个索引
     ORACLE索引管理需要遵从一系列的指导原则,包含以下内容:

        插入表数据之后再创建索引

        针对合理的表和列创建索引

        对索引列的顺序进行排列来提升性能

        限制每个表的索引的个数

        删除不再需要的索引

        估计索引的大小并指定存储参数

        为每个索引指定表空间

        采用并行的方式创建索引

        考虑创建索引是使用NOLOGGING参数

        权衡进行索引合并或重建的代价和带来的好处

        考虑对索引进行失效操作和删除索引的代价

    针对合理的表和列创建索引

    根据以下指导原则决定在什么情况下需要创建索引:

    • 当需要经常读取一个较大的表中少于15%的数据的时候可以考虑创建索引。这一百分比门限值会随表的扫描速度和行数据的散列方式与索引键之间的关系而有较大的差别。表的扫描速度越快,则百分比取值越低;the more clustered the row data,则百分比门限取值越高。
    • 为了改进多表关联的查询性能,对关联的列进行索引。
    • 小表不需要索引。如果查询的时间很长,则表有可能已经变大了。
    • 强烈建议对某些列建立索引,具有以下特征的列可建立索引:
    • 该列中每行的值是唯一的。
    • 该列中的值取值范围非常大(使用常规索引较好)。
    • 该列中的值取值范围非常小(使用bitmap索引较好)。
    • 该列中包含有许多空值,但是查询经常选择所有有值的行。在这种情况下,使用以下的语句:WHERE COL_X > -9.99 * power(10,125)。上述的语句更好的形式为:WHERE COL_X IS NOT NULL。这是因为第一种表达方式使用到了COL_X的索引(假设COL_X是一个数字类型的列)。
    • 具有以下特征的列则不太适合使用索引:
    • 该列中有很多空值,但是并不搜索值为非空的行。
    • LONG和LONG RAW类型的列不能进行索引。

        单条索引记录的大小不能超过数据块中可用空间的(大概)1.5倍。

    对索引列的顺序进行排列来提升性能

        CREATE INDEX语句中的列的顺序会影响查询的性能。通常情况下,首先指定最常使用的列。
        例如:针对多个列创建一个索引,列1、列2、列3,单独访问列1和同时访问列1、列2的查询速度会得到提高,而单独访问列2、单独访问列3、以及同时访问列2、列3的查询不会使用索引。

    限制每个表的索引的个数

        一个表可以有任意数量的索引。但是索引越多的话,那么在对表进行修改的时候所需的开销也就更大。当插入和删除行的时候,表上的所有索引都要被更新,当某个列被更新的时候,所有包含该列的索引也都需要被更新。
        所以,在“获取数据的速度”和“更新表的速度”之间需要进行平衡。如果某个表基本上是“只读”的话,那么建立多个索引是合理的,如果某个表需要经常被更新的话,少建索引更为合理。

    删除不再需要的索引

        在以下情况下,考虑删除索引:

    •     对查询加速不起作用。例如:表非常小;表中的记录数非常多,但是索引的条目数却非常少。
    •     程序中的查询不使用该索引。

        在重建索引之前必须先删除索引。

    估计索引的大小并指定存储参数

        在创建索引之前估算索引的大小有利于更好的进行磁盘空间的规划和管理。综合考虑索引、表、UNDO表空间、重做日志的大小,来决定容纳整个数据库所需要的磁盘空间。基于以上估算,可以进行合理的硬件资源分配和做出其他相关的策略决定。
        利用估算出的某个索引的大小可以更好的管理该索引所使用的磁盘空间。在估算好该索引所需要占用的最大空间的前提下,创建索引时可以通过指定合理的存储参数来提升I/O和使用该索引的程序的效率。指定存储参数后,表数据段会分配到更少的extent,而所有的索引数据被存储在彼此相关的连续的磁盘区域中,这样就减少了使用到该索引的查询所需的磁盘I/O的时间。
        单条索引记录的最大空间大致为数据块大小的1.5倍。

    为每个索引指定表空间

        索引可以被创建在任何表空间中。既可以和被索引的表在相同的表空间中,也可以和被索引的表处于不同的表空间中。对于前一种情况,对于数据库的维护来说会更为方便,也有利于保证程序应用的可用性,因为所有相关的数据的在线/离线状态完全保持已知。
        将表和它的索引存储在不同的表空间当中会产生更好的性能表现,这样会减少磁盘竞争。但是当其中的一个表空间处于离线状态的话,那么引用了这张表的语句就不会正常执行了。

    采用并行的方式创建索引

        索引也是可以并行创建的,就像并行创建表一样。因为多个后台进程同时进行索引的创建工作,所以与单个进程的顺序索引创建相比,数据库能够更快的创建索引。
        并行创建索引的时候,每个进程是单独使用存储参数的。例如:如果某个创建索引的命令中INITIAL参数的值为5M,而并行度为12的话,那么这一索引创建操作最少消耗60M的存储空间。

    考虑创建索引是使用NOLOGGING参数

        在CREATE INDEX语句中可以使用NOLOGGING参数来使重做日志产生最少的记录。但是需要注意的是:使用NOLOGGING参数创建的索引不会被归档,所以在创建索引之后需要进行一次备份。
        使用NOLGGING模式创建索引有如下好处:

    •     节省重做日志的空间
    •     创建索引的时间会比缩短
    •     提升大索引并行创建的性能

        一般来说,使用NOLOGGING模式创建索引对创建工作性能提升的效果,大的索引的效果会比小索引创建的效果提升更为明显。创建小索引的时候使用NOLOGGING参数对创建索引使用的时间影响很小,创建大索引的时候效果特别明显,特别是当并行创建的时候更是如此。

    权衡进行索引合并和重建的代价及益处

        索引空间大小分配不合理或加速增长会产生索引碎片。通过重建和合并索引能够消除或者减少索引碎片。但是当执行以上两种操作中的其中一种之前,一定要对其带来的益处和代价进行权衡,并选择最为适宜当前情况的操作。
     
        下面的表格对重建和合并索引的利弊进行了比较:

    重建索引合并索引
    很快的将索引移动到另一个表空间不能将索引移动到另一个表空间
    代价较大:需要更多的磁盘空间代价较小:不需要额外的磁盘空间
    创建新的索引树,会适当收缩树的高度合并索引树中同枝的叶节点块
    无需删除原有索引就可以快速更改存储和表空间参数。快速释放索引叶节点块以供使用

     

        在有B-tree叶节点块可供合并被释放的情况下,可以使用下面的语句来合并叶节点块:
        ALTER INDEX vmoore COALESCE。
           下图说明了上述语句针对索引树的叶子节点的合并及释放的过程:

    考虑删除索引和对索引进行失效操作的代价

        由于唯一键和主键拥有相关联的索引,所以当考虑是否disable或drop一个UNIQUE或PRIMARY KEY的时候,需要将删除和创建索引的代价也做为考虑的一个因素。如果相关联的索引非常巨大,那么最好是使这个约束保持enable的状态,这样会比较节省时间。在drop和disable一个UNIQUE KEY或PRIMARY KEY的时候,也可以显式的指出是想保留还是删除相关的索引。

     

    展开全文
  • oracle 创建 唯一索引和非唯一索引

    万次阅读 2017-09-16 13:03:10
    2、输入命令:CREATE UNIQUE INDEX 索引名 on 表名(想要创建索引的列名) TABLESPACE 表空间名; CREATE UNIQUE INDEX gcsj0917 ON VEH_PASSREC_08200916 (GCSJ) TABLESPACE USERS 如果不知道表
  • solr导入oracle数据并创建索引

    千次阅读 2016-12-09 18:34:12
    solr下载安装下载点此下载 solr-5.5.3安装 安装jdk1.8及以上,配置好环境变量(略) 解压solr,以使用命令行脚本启动服务器。让我们去solr的bin目录,从命令...-c -要创建的核心或集合的名称(必需)。 -d -配置目录
  • 1、主键和外键主键:关系...注2:Oracle数据库共有5个约束:主键、外键、非空、唯一、条件非空:这个列的值不能为空(NOT NULL)唯一:这个列的值在表中是唯一存在的,不能重复,但可以为空值(NULL)条件:可以对列的
  • Oracle索引创建和使用

    万次阅读 2016-09-07 13:38:39
    创建索引的作用 1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 2、可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 3、可以加速表和表之间的连接,特别是在实现数据的参考完整性...
  • oracle 物化视图及创建索引

    千次阅读 2019-10-01 22:47:55
    普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。 1、物化视图的类型:ON DEMAND、ON COMMIT 二者的区别在于刷新...
  • oracle 五种索引创建

    2012-03-13 14:57:28
    要在Oracle数据库中使用索引,首先需要创建...适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引 创建Ora
  • Oracle索引

    千次阅读 2015-07-31 07:46:08
    Oracle 索引
  • Oracle中imp命令详解

    万次阅读 2019-09-14 17:20:10
    oracle中imp命令详解 Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文 件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用 法。 1. 获取帮助 imp...
  • ORACLE创建表空间,用户及用户授权CMD命令使用sqlpus连接,sys用户用DBA身份登录创建用户创建表空间用户授权给用户分配表空间 使用sqlpus连接,sys用户用DBA身份登录 注意sql语句需要用";"结尾,不以“;”结尾回车会...
  • Oracle数据库索引

    千次阅读 2015-08-18 15:33:26
    Oracle数据库索引  本文标签:Oracle数据库 索引   导读:数据库在当代社会中的地位是越来越高,干什么都似乎离不开数据库,所以,掌握好数据库是在社会中立足的条件 。如果你在数据库方面是一个新手,又...
  • Oracle DBA常用命令之查看表空间的名称及大小: Oracle DBA常用命令之查看表空间物理文件的名称及大小: Oracle DBA常用命令之查看回滚段名称及大小: Oracle DBA常用命令之如何查看某个回滚段里面,跑的什么事物...
  • Oracle DB 索引

    千次阅读 2013-10-16 14:52:51
    在你创建主键或唯一约束条件时,服务器会同时自动创建索引。 索引 索引具有以下特点: • 是一个方案对象 • Oracle Server 可用来通过指针加快行检索速度 • 可通过使用快速路径访问方法迅速找到数据来减少磁盘...
  • ORACLE重建索引总结

    2011-12-13 10:32:28
    创建索引:create index IX_PM_USERGROUP on T_PM_USER (fgroupid); 说明:此方式耗时间,无法在24*7环境中实现,不建议使用。 2 、直接重建: 举例: alter index indexname rebuild; 或alter index ...
  • oracle dba 常用命令

    千次阅读 2013-05-16 10:34:36
    1最基本的 oracle dba 常用命令 1 运行SQLPLUS工具sqlplus 2 以OS的默认身份连接/ as sysdba 3 显示当前用户名show user 4 直接进入SQLPLUS命令提示符sqlplus /nolog 5 在命令提示符以OS身份连接connect / as ...
  • Oracle Move命令总结

    千次阅读 2014-03-13 08:46:02
    Oracle Move命令总结
  • B-树索引在Oracle中是一个通用的索引,在创建索引时它就是默认的索引类型。最多可以包括32列。 位图索引Oracle为每个唯一键创建一个位图,然后把与键值所关联的ROWID保存为位图。最多可以包括30列。 一般情况...
  • 一、创建索引:  create index index_name on table_name(table_field); 二、修改索引:  alter index 索引名 rename to 新索引名 三、删除索引:  drop index 索引名 四、查看索引:  .查看索引个数和类别 ...
  • Oracle 全文索引

    千次阅读 2011-07-23 00:18:42
    前言: Oracle从7.3开始支持全文检索,即用户可以使用Oracle服务器的上下文(ConText)选项完成基于文本的查询。具体可以采用通配符查找、模糊匹配、相关分类、近似查找、条件加权和词意扩充等方法。在Oracle8.0.x...
  • Oracle对象教程:索引(Index)创建使用,索引:对数据库表中的某些列进行排序,便于提高查询效率。 当我们在某本书中查找特定的章节内容时,可以先从书的目录着手,找到该章节所在的页码,然后快速的定位到该页。...
  • oracle各种索引介绍

    千次阅读 2015-10-27 16:07:58
    一.... 1.1 索引创建 语法 :  CREATE UNIUQE | BITMAP INDEX .  ON .  ( | ASC | DESC,   | ASC | DESC,...)   TABLESPACE   STORAGE   LOGGING | N
  • ORACLE重建索引详解

    千次阅读 2018-07-09 22:22:12
    二、重建索引的标准1、索引重建是否有必要,一般看索引是否倾斜的严重,是否浪费了空间, 那应该如何才可以判断索引是否倾斜的严重,是否浪费了空间, 对索引进行结构分析(如下):SQL>Analyze index index_...
  • Oracle索引的使用

    万次阅读 2016-04-22 23:44:53
    索引是由Oracle维护的可选结构,为数据提供快速的访问。准确地判断在什么地方需要使用索引是困难的,...创建索引时,下列准则将帮助用户做出决定:  1) 索引应该在SQL语句的"where"或"and"部分涉及的表列(也称谓词
  • oracle SQL命令大全

    2020-12-16 00:35:27
    truncate table 表名 (删除表中记录时释放表空间) DML 语句: 表级共享锁: 对于操作一张表中的不同记录时,互不影响 行级排它锁:对于一行记录,oracle 会只允许只有一个用户对它在同一时间进行修改操作 wait() ...
  • Oracle操作和命令

    千次阅读 2020-01-21 16:45:16
    1. 可以通过cmd 进入oracle控制台 如果是linux,需要先 # su - oracle 切换到oracle用户环境下 >> sqlplus /nolog //进入oralce控制台 >> conn sys/tiger as sysdba //以管理员权限登录 >> ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,790
精华内容 27,916
关键字:

oracle创建索引命令