Oracle索引

一、概述

索引是用於加速數據存取數據對象,合理的使用索引可以大大降低I/O次數,從而提高數據訪問性能。索引有很多種我們主要介紹常用的幾種。

 

二、創建索引

1、單列索引

單列索引是基於單個列所建立的索引。

sql>create index 索引名 on 表名(列名);

 

2、複合索引

複合索引是基於兩列或是多列的索引,在同一張表上可以有多個索引,但是要求列的組合必須不同。

sql>create index emp_index1 on emp(ename,job);

sql>create index emp_index2 on emp(job,ename);

 

三、使用索引的原則

使用原則:

1、在大表上建立索引纔有意義。

2、在where子句或是連接條件上經常飲用的列上建立索引。

3、索引的層次不要超過4層。

 

四、索引缺點分析

索引有一些先天不足:

1、建立索引,系統要佔用大約爲表的1.2倍的硬盤和內存空間來保存索引。

2、更新數據的時候,系統必須要有額外的時間來同時對索引進行更新,一維持數據和索引的一致性。

實踐表明,不恰當的索引不但於事無補,反而會降低系統性能。因爲大量的索引在進行插入、修改和刪除操作時比沒有索引花費更多的系統時間。

比如在如下字段建立索引應該是不恰當的:

1、很少或從不引用的字段。

2、邏輯型的字段,如男或女(是或否)等。

綜上所述,提高查詢效率是以消耗一定的系統資源爲代價的,索引不能盲目的建立,這是考驗一個DBA是否優秀的很重要的指標。

 

五、其他索引

按照數據存儲方式,可以分爲B*樹、反向索引、位圖索引。

按照索引列的個數分類,可以分爲單列索引、複合索引。

按照索引列值的唯一性,可以分爲唯一索引和非唯一索引。

此外還有函數索引,全局索引,分區索引……

 

六、顯示索引信息

1、顯示錶的所有索引

在同一張表上可以有多個索引,通過查詢數據字典視圖dba_indexs和user_indexs,可以顯示索引信息。其中dba_indexs用於顯示數據庫所有的索引信息,而user_indexs用於顯示當前用戶的索引信息。

sql>select index_name,index_type from user_indexes where table_name='表名';

 

2、顯示索引列

通過查詢數據字典視圖user_ind_columns,可以顯示索引對應的列的信息。

sql>select table_name,column_name from user_ind_columns where index_name='IND_ENAME';

發佈了16 篇原創文章 · 獲贊 14 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章