1. 程式人生 > >索引的定義、分類及使用

索引的定義、分類及使用

索引

1、什麼是索引?索引的常見型別有什麼?

索引就是加快檢索表中資料的方法。資料庫的索引類似於書籍的索引。在書籍中,索引允許使用者不必翻閱完整個書就能迅速地找到所需要的資訊。在資料庫中,索引也允許資料庫程式迅速地找到表中的資料,而不必掃描整個資料庫。

建設原則:

 1、索引應該經常建在Where 子句經常用到的列上。如果某個大表經常使用某個欄位進行查詢,並且檢索行數小於總錶行數的5%。則應該考慮。

 2、對於兩表連線的欄位,應該建立索引。如果經常在某表的一個欄位進行Order By 則也經過進行索引。

 3、不應該在小表上建設索引。

2、分類:我們主要介紹常見的聚集索引和非聚集索引

聚集索引:對正文內容按照一定規則排列的目錄稱為聚集索引。

比如圖書館新進了一批書。那麼這些書需要放到圖書館內。書如何放呢?一般都有一個規則,雜誌類的放到101房間,文學類的放到102房間,理工類的放到103房間等等。這些儲存的規則決定了每本書應該放到哪裡。而這個例子中聚集索引為書的類別。       

非聚集索引:目錄自己按照一定規則排列,正文自己按照另一種規則排列,目錄主要是儲存對正文的一個對映關係,這種稱為非聚集索引。

繼續使用上述提到的例子: 同學如果想去圖書館找一本書,而不知道這本書在哪裡?那麼這個同學首先應該找的就是檢索室。對於要查詢一本書來說,在檢索室查是一個非常快捷的的途徑了。但是,在檢索室中你查到了該書在XX室XX書架的資訊。但是你的查詢並沒有結束,你僅僅找到了目的書的位置資訊,你還要去該位置去取書。 對於這種方式來說,你需要兩個步驟:         (1)查詢該記錄所在的位置。         (2)通過該位置去取要找的記錄。

3、索引的優點和缺點

優點:大大加快資料的檢索速度(主要原因)。

缺點:建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加

索引需要佔物理空間。

 1、索引主要進行提高資料的查詢速度。 當進行DML時,會更新索引。因此索引越多,則DML越慢,其需要維護索引。 因此在建立索引及DML需要權衡。

建立索引: 單一索引:Create Index <Index-Name> On <Table_Name>(Column_Name);

 複合索引: Create Index i_deptno_job on emp(deptno,job); —>

emp表的deptnojob列建立索引。

  select * from emp where deptno=66 and job='sals' ->走索引。

  select * from emp where deptno=66 OR job='sals' ->將進行全表掃描。不走索引

  select * from emp where deptno=66 ->走索引。

  select * from emp where job='sals' ->進行全表掃描、不走索引。

  如果在where 子句中有OR 操作符或單獨引用Job (索引列的後面列) 則將不會走索引,將會進行全表掃描。

4、索引的建立和使用

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

注:對於主鍵或者唯一鍵,server會自動加索引。

索引使用方法:不用特意使用,Oracle會自動處理。

  1. 刪除索引

DROP INDEX indexname;