索引的定義、分類及使用
索引
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); —>在
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會自動處理。
- 刪除索引
DROP INDEX indexname;