一、概述
索引是用於加速數據存取數據對象,合理的使用索引可以大大降低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';