Oracle 基礎 索引

2021-06-28 22:03:07 字數 1612 閱讀 9355

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;

未完待續~

oracle索引基礎概念

原理 對錶中的某些列進行排序,那麼當查詢這些列時,就不需要全表查詢了,可在排序好的列中進行快速搜尋,比如二分法等。應用 在where子句中出現的列往往是需要建立索引的列。總結 1 提高查詢的效率 2 空間換時間,需要占用表空間tablespace,如果索引檔案特別大時,可考慮將索引放在另外的表空間中...

Oracle索引 索引型別

oracle 提供了多種不同型別的索引以供使用。簡單地說,oracle 中包括如下索引 b 樹索引 這些是我所說的 傳統 索引。到目前為止,這是 oracle 和大多數其他資料庫中最常用的索引。b 樹的構造類似於二叉樹,能根據鍵提供一行或乙個行集的快速訪問,通常只需很少的讀操作就能找到正確的行。不過...

mysql索引基礎 Mysql 索引基礎

什麼是索引?為什麼要建立索引?索引,其實就是目錄。索引,用於快速找出在某個列中有某個特定值的行。不使用索引,mysql必須從第一條記錄開始查詢整張表,直到找出相關的行,那麼表越大,查詢資料所花費的時間就越多。假如表中查詢的列有乙個索引 目錄 mysql能夠快速定位到達乙個位置去搜尋資料檔案,而不必查...