程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle基礎——索引

Oracle基礎——索引

編輯:Oracle教程

Oracle基礎——索引


1.索引是做什麼的?

回答: 索引是數據庫中用來提高查詢效率。

補充: 過多的建立索引會大大降低DML語句的效率,建立索引的原則是在經常作為查詢條件的字段上建立

索引,在存在大量重復信息的字段上不適合建立索引。

注意:(以下情況索引失效)

1)使用<>比較時,索引無效,建議使用< or >

2)使用前置模糊匹配%時無效,用instr代替

3)使用函數時 (例:(create index ind… on 表名(to_char(birth,’’))建立這樣的索引使用函

數時失效,但要注意查詢語句的大小寫)

4)使用不匹的數據類型

5)字段含有NULL索引會失效,建立索引的字段應該是NOT NULL

語法:

-- 建立索引:

CREATE INDEX INDEX_ENAME ON EMP (ENAME)

 

-- 如果在建立索引的過程中還可以對表進行DML操作,就在命令行上加online

CREATE INDEX INDEX_SNAME ON DB_STUDENT(SNAME) [ONLINE]

 

-- 經常做為聯合查詢的字段可以建立聯合索引:

CREATE INDEX INDEX_EMP_SAL_JOB ON EMP(SAL,JOB)

 

-- 刪除索引:

DROP INDEX INDEX_HIREDATE

 

2.聚簇索引:

聚簇是把關系列放在同一個地方,聚簇索引一般建立在關聯表上的,用來提高根據關聯字段查詢的效率

步驟:

1)先建立聚簇

2)在建立表的同時將關聯字段交給聚簇管理

3)在該聚簇上建立索引

語法:

-- 創建聚簇
create cluster cluster_deptno(deptno number(3));

 

-- 建立表的時候將指定字段放在聚簇裡
create table dept
(
deptno number(3) ,
dname varchar2(32)
)
cluster cluster_deptno(deptno);

alter table dept add constraint pk_dept_deptno primary key (deptno);

create table emp
(
empno number(5) primary key,
ename varchar2(32),
age number(3),
sal number(5),
deptno number(3) references dept(deptno)
)

 

-- 外鍵必須建在聚簇之前
cluster cluster_deptno(deptno)

 

-- 將索引建立在聚簇上(即建立聚簇索引)
create index cindex_deptno on cluster cluster_deptno;

 

-- 刪除聚簇

drop cluster cluster_deptno


3.反向索引:通常建立在由序列生成字段信息的字段上
create index INDEX_STU_SNO on DB_STUDENT (sno) reverse;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved