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建立索引的主要内容,如果未能解决你的问题,请参考以下文章