如何在ORACLE数据库的字段上建立索引

更新时间:2023-05-22 08:13:26 阅读: 评论:0

如何在ORACLE数据库的字段上建立索引?
Oracle中建立索引,会提高查询速度:
create index 索引名 on 表名(列名);
例如:
create index index_urid on tbl_detail(urid);
如何找数据库表的主键字段的名称?
SELECT * FROM ur_constraints WHERE CONSTRAINT_TYPE='P' and table_name='AAA';
lect * from dba_cons_columns where CONSTRAINT_NAME='SYS_AAA';
 
Oracle 在创建主键(可以不加constraint SYS_AAA),会为库表自动创建索引,索引的列为
主键列。
并且当库表某些列名或者库表名改变时候,Oracle自动创建的索引SYS_AAA,中的索引列也会自动更新(类似于视图),并且SYS_AAA会与名字更改后的库表还是保持索引关系。
关键系统库表:
desc dba_constraints
desc dba_cons_columns
 
desc dba_indexes
desc dba_ind_columns
desc DBA_TAB_COLUMNS
 
例子1:更改库表的列名
烟雨长廊ALTER  TABLE AAA  RENAME  COLUMN  ID TO  AAA_ID;
create table AAA (
ID NUMBER(8),
NAME CHAR(20),
constraint SYS_AAA primary key(ID)
);
关于运动的名言和佳句.n  ]  )   
  [  WITH  <  index_option  >  [  ,...n]  ]   
  [  ON  filegroup  ] 
   
  <  index_option  >  ::=   
          {  PAD_INDEX  | 
                  FILLFACTOR  =  fillfactor  | 
                  IGNORE_DUP_KEY  | 
柯利犬有哪些                  DROP_EXISTING  | 
          STATISTICS_NORECOMPUTE  | 
          SORT_IN_TEMPDB      人不学不知义
  } 
   
  参数 
  UNIQUE 
   
  为表或视图创建唯一索引(不允许存在索引值相同的两行)。视图上的聚集索引必须是  UNIQUE  索引。 
   
  在创建索引时,如果数据已存在,Microsoft®  SQL  Server™  会检查是否有重复值,并在每次使用  INSERT  或  UPDATE  语句添加数据时进行这种检查。如果存在重复的键值,将取消  CREATE  INDEX  语句,并返回错误信息,给出第一个重复值。当创建  UNIQUE  索引时,有多个  NULL  值被看作副本。 
   
  如果存在唯一索引,那么会产生重复键值的  UPDATE  或  INSERT  语句将回滚,SQL  Server  将显示错误信息。即使  UPDATE  或  INSERT  语句更改了许多行但只产生了一个重复值,也会出现这种情况。如果在有唯一索引并且指定了  IGNORE_DUP_KEY  子句情况下输入数据,则只有违反  UNIQUE  索引的行才会失败。在处理  UPDATE  语句时,IG
NORE_DUP_KEY  不起作用。 
   
  SQL  Server  不允许为已经包含重复值的列创建唯一索引,无论是否设置了  IGNORE_DUP_KEY。如果尝试这样做,SQL  Server  会显示错误信息;重复值必须先删除,才能为这些列创建唯一索引。 
   
  CLUSTERED 
   
  创建一个对象,其中行的物理排序与索引排序相同,并且聚集索引的最低一级(叶级)包含实际的数据行。一个表或视图只允许同时有一个聚集索引。 
   
清明节哪一天
  具有聚集索引的视图称为索引视图。必须先为视图创建唯一聚集索引,然后才能为该视图定义其它索引。 
   
  在创建任何非聚集索引之前创建聚集索引。创建聚集索引时重建表上现有的非聚集索引。 
   
  如果没有指定  CLUSTERED,则创建非聚集索引。 
   
   
   
  说明    因为按照定义,聚集索引的叶级与其数据页相同,所以创建聚集索引时使用  ON  f
ilegroup  子句实际上会将表从创建该表时所用的文件移到新的文件组中。在特定的文件组上创建表或索引之前,应确认哪些文件组可用并且有足够的空间供索引使用。文件组的大小必须至少是整个表所需空间的      倍,这一点很重要。 
   
   
  NONCLUSTERED 
   
  创建一个指定表的逻辑排序的对象。对于非聚集索引,行的物理排序独立于索引排序。非聚集索引的叶级包含索引行。每个索引行均包含非聚集键值和一个或多个行定位器(指向包含该值的行)。如果表没有聚集索引,行定位器就是行的磁盘地址。如果表有聚集索引,行定位器就是该行的聚集索引键。 
   
  每个表最多可以有  249  个非聚集索引(无论这些非聚集索引的创建方式如何:是使用  PRIMARY  KEY  和  UNIQUE  约束隐式创建,还是使用  CREATE  INDEX  显式创建)。每个索引均可以提供对数据的不同排序次序的访问。 
   
  对于索引视图,只能为已经定义了聚集索引的视图创建非聚集索引。因此,索引视图中非聚集索引的行定位器一定是行的聚集键。 
平移旋转
   
  index_name 
   
  是索引名。索引名在表或视图中必须唯一,但在数据库中不必唯一。索引名必须遵循标识符规则。 
   
  table 
   
  包含要创建索引的列的表。可以选择指定数据库和表所有者。 
   
  view 
   
  要建立索引的视图的名称。必须使用  SCHEMABINDING  定义视图才能在视图上创建索引。视图定义也必须具有确定性。如果选择列表中的所有表达式、WHERE  和  GROUP  BY  子句都具有确定性,则视图也具有确定性。而且,所有键列必须是精确的。只有视图的非键列可能包含浮点表达式(使用  float  数据类型的表达式),而且  float  表达式不能在视图定义的其它任何位置使用。 
    游戏8
  若要在确定性视图中查找列,请使用  COLUMNPROPERTY  函数(IsDeterministic  属性)。该函数的  IsPreci  属性可用来确定键列是否精确。 
   
  必须先为视图创建唯一的聚集索引,才能为该视图创建非聚集索引。   
   
  在  SQL  Server  企业版或开发版中,查询优化器可使用索引视图加快查询的执行速度。要使优化程序考虑将该视图作为替换,并不需要在查询中引用该视图。 
   
  在创建索引视图或对参与索引视图的表中的行进行操作时,有  7  个  SET  选项必须指派特定的值。SET  选项  ARITHABORT、CONCAT_NULL_YIELDS_NULL、QUOTED_IDENTIFIER、ANSI_NULLS、 ANSI_PADDING  和  ANSI_WARNING  必须为  ON。SET  选项  NUMERIC_ROUNDABORT  必须为  OFF。 
   
  如果与上述设置有所不同,对索引视图所引用的任何表执行的数据修改语句  (INSERT、UPDATE、DELETE)  都将失败,SQL  Server  会显示一条错误信息,列出所有违反设置要求的  SET  选项。此外,对于涉及索引视图的  SELECT  语句,如果任何  SET  选项的值不是所需的值,则  SQL  Server  在处理该  SELECT  语句时不考虑索引视图替换。在受上述  SET  选项影响的情况中,这将确保查询结果的正确性。 
   
  如果应用程序使用  DB-Library  连接,则必须为服务器上的所有  7  个  SET  选项指派所需的值。(默认情况下,OLE  DB  和  ODBC  连接已经正确设置了除  ARITHABORT  外所有需要的  SET  选项。) 
   
  如果并非所有上述  SET  选项均有所需的值,则某些操作(例如  BCP、复制或分布式查询)可能无法对参与索引视图的表执行更新。在大多数情况下,将  ARITHABORT  设置为
  ON(通过服务器配置选项中的  ur  options)可以避免这一问题。   
   
  强烈建议在服务器的任一数据库中创建计算列上的第一个索引视图或索引后,尽早在服务器范围内将  ARITHABORT  用户选项设置为  ON。 
   
双鱼运势  有关索引视图注意事项和限制的更多信息,请参见注释部分。 
   
  column 
   
  应用索引的列。指定两个或多个列名,可为指定列的组合值创建组合索引。在  table  后的圆括号中列出组合索引中要包括的列(按排序优先级排列)。   
   
   
   
  说明    由  ntext、text  或  image  数据类型组成的列不能指定为索引列。另外,视图不能包括任何  text、ntext  或  image  列,即使在  CREATE  INDEX  语句中没有引用这些列。   
   
   
  当两列或多列作为一个单位搜索最好,或者许多查询只引用索引中指定的列时,应使用组合索引。最多可以有  16  个列组合到一个组合索引中。组合索引中的所有列必须在同一个表中。组合索引值允许的最大大小为  900  字节。也就是说,组成组合索引的固定大小列的总长度不得超过  900  字节。有关组合索引中可变类型列的更多信息,请参见注释部分。 

本文发布于:2023-05-22 08:13:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/923167.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:视图   聚集   创建
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图