目錄
一、索引的分類
1、按存儲形式:
????????1)B-TREE索引:
????????2)位圖索引:
????????3)反向鍵索引:
????????4)基于函數的索引:
2、按唯一性:
????????1)唯一索引:
3、按列的個數:
????????1)單列索引:
????????2)復合索引(也稱為聯合索引):
二、索引的優缺點
1、優點:
2、缺點:
三、索引跟主鍵的區別
四、確認索引用沒用上
五、一般會在什么情況下加索引
六、索引創建
七、索引什么情況下會失效
一、索引的分類
1、按存儲形式:
即索引中存儲的內容不同。
????????1)B-TREE索引:
????????索引列原始數據+ROWID,工作中最常見、使用范圍最廣的索引,列基數比較大的時候使用(行業、身高)。
????????2)位圖索引:
????????位圖+ROWID,列基數比較小的時候使用(性別、婚姻狀況)。
????????3)反向鍵索引:
????????索引列原始數據的反向存儲+ROWID,為防止B-TREE索引在某葉上數據量占比過高而使用的一種索引。
????????4)基于函數的索引:
????????將索引列原始數據經函數處理后存儲+ROWID。
2、按唯一性:
索引列中的數據是否有重復值。
????????1)唯一索引:
????????索引列中不可能出現重復值。
3、按列的個數:
索引覆蓋的列的個數。
????????1)單列索引:
????????基于一個列建立的索引。
????????2)復合索引(也稱為聯合索引):
????????基于兩個或兩個以上列建立的索引。
二、索引的優缺點
1、優點:
????????1)大大加快數據的檢索速度。
????????2)創建唯一性索引,保證數據庫表中每一行數據的唯一性。
????????3)加速表和表之間的連接。
????????4)在使用分組和排序子句進行數據檢索時,可以顯著減少查詢中分組和排序的時間。
2、缺點:
????????1)索引需要占物理空間。
?????????2)當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,降低了數據的維護速度。
三、索引跟主鍵的區別
1、主鍵一定是唯一性索引,唯一性索引并不一定就是主鍵。
2、一個表中可以有多個唯一性索引,但只能有一個主鍵。
3、主鍵列不允許空值,而唯一性索引列允許空值。
4、索引可以提高查詢的速度。
5、主鍵和索引都是鍵,不過主鍵是邏輯鍵,索引是物理鍵,意思就是主鍵不實際存在,而索引實際存在在數據庫中。
6、應用范疇不同 種類不同(唯一索引、主鍵索引和聚集索引主鍵只是其中的一種)創建方式不同。
四、確認索引用沒用上
通過explain查詢sql執行計劃,主要看key使用的是哪個索引。
五、一般會在什么情況下加索引
1、主鍵自動建立唯一索引。
2、頻繁作為查詢條件的字段應該創建索引。
3、查詢中與其他表關聯的字段,外鍵關系建立索引。
4、單鍵/組合索引的選擇,組合索引的性價比更高。
5、查詢中排序的字段,排序字段若通過索引去訪問將大大提高排序速度。
6、查詢中統計或者分組字段。
7、過濾條件好的字段選擇一段選擇加索引。
六、索引創建
CREATE INDEX 索引名 ON 表名 (列)
七、索引什么情況下會失效
1、對列進行計算或者使用函數時。
2、使用了反向操作或者link時。
3、在where語句中使用or時,如果有一個列沒索引,那么其他列就會失效。