數據庫索引,在數據庫管理系統中是一個排序形式的數據結構,以協助快速查詢和更新數據庫表中數據。索引的實現一般使用B樹及其變種B+樹。算法
在數據以外,數據庫系統還維護着那些知足特定查找算法的數據結構,這些數據結構以某種方式引用(指向)數據,這樣就能夠在這些數據結構上實現高級查找算法。這種數據結構,就是索引。數據庫
爲表設置索引也是要付出相應的代價:第一,數據庫的存儲空間增大了;第二,在插入和修改數據時要花費較多的時間(由於索引也要隨之變更)。數據結構
建立索引能夠大大提升系統的性能。性能
第一,經過建立惟一性索引,能夠保證數據庫表中每一行數據的惟一性。優化
第二,能夠大大加快數據的檢索速度,這也是建立索引的最主要的緣由。code
第三,能夠加速表和表之間的鏈接,特別是在實現數據的參考完整性方面特別有意義。排序
第四,在使用分組和排序子句進行數據檢索時,一樣能夠顯著減小查詢中分組和排序的時間。索引
第五,經過使用索引,能夠在查詢的過程當中,使用優化隱藏器,提升系統的性能。get
也許會有人要問:增長索引有如此多的優勢,爲何不對錶中的每個列建立一個索引呢?由於,增長索引也有許多不利的方面。引用
第一,建立索引和維護索引要耗費時間,這種時間隨着數據量的增長而增長。
第二,索引須要佔物理空間,除了數據表佔數據空間以外,每個索引還要佔必定的物理空間,若是要創建聚簇索引,那麼須要的空間就會更大。
第三,當對錶中的數據進行增長、刪除和修改的時候,索引也要動態的維護,這樣就下降了數據的維護速度。