oracle建立索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle建立索引相关的知识,希望对你有一定的参考价值。

一个表 student ,系统会经常通过 表中三个字段(name,sex,grade)进行搜索,即select * from student where name='xx' and sex='xx' and grade='xx' .
所以要给这三个字段都建立索引,请问怎么建立索引? 有什么要注意的地方么?

对三个字段建立索引:
create index Stuname on student(name);
create index Stusex on student(sex);
create index Stugrade on student(grade);
注意的问题,考虑是不是要建立唯一索引(unique),如果有学号的话,可以考虑建立唯一索引引。
再就是对经常查询,但又相对稳定的可以建立聚簇索引,提高查询效率
参考技术A 如果查询语法一直是这3列,那么考虑建立3列的联合索引(name,sex,grade) where name='xx' and sex='xx' and grade='xx'

否则,建议在name上建立一个单列索引、在grade上建立单列索引,sex就没有多少必要建单列索引了

如果上述查询经常用到,而按照其他的条件查询的也经常有。

则可以建立上述的3列混合索引,也建立name、grade等的单列索引
参考技术B 三个字段一起使用,就建立聚合索引,比单独三个索引快
create index idx_Stuname on student(name,sex,grade);

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

Oracle中建立索引,会提高查询速度:
create index 索引名 on 表名(列名);
例如:
create index index_userid on tbl_detail(userid);
参考技术A

索引建立代码:

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 不(能)排序(存储时就已按升序,所以指出不再排序)

以上是关于oracle建立索引的主要内容,如果未能解决你的问题,请参考以下文章

oracle 数据库如何建立索引 如何用索引?

oracle 怎样添加索引

oracle索引,索引的建立修改删除

Oracle 建立索引及SQL优化

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

Oracle索引详解