索引的種類
功能邏輯劃分:
普通索引,普通索引是基礎的索引,沒有任何約束,主要用於提高查詢效率
唯一索引,唯一索引就是在普通索引的基礎上增加了資料唯一性的約束,在一張資料表裡可以有多個唯一索引。
主鍵索引,主鍵索引在唯一索引的基礎上增加了不為空的約束,也就是 not null+unique,一張表裡最多只有乙個主鍵索引。
全文索引,全文索引用的不多,mysql 自帶的全文索引只支援英文。我們通常可以採用專門的全文搜尋引擎,比如 es(elasticsearch) 和 solr。
物理實現劃分:
聚簇索引,聚集索引可以按照主鍵來排序儲存資料
非聚集索引,非聚集索引稱為二級索引或者輔助索引。在資料庫系統會有單獨的儲存空間存放非聚集索引,這些索引項是按照順序儲存的,但索引項指向的內容是隨機儲存的。也就是說系統會進行兩次查詢,第一次先找到索引,第二次找到索引對應的位置取出資料行。非聚集索引不會把索引指向的內容像聚集索引一樣直接放到索引的後面,而是維護單獨的索引表(只維護索引,不維護索引指向的資料),為資料檢索提供方便。
聚集索引的葉子節點儲存的就是我們的資料記錄,非聚集索引的葉子節點儲存的是資料位置。非聚集索引不會影響資料表的物理儲存順序。
乙個表只能有乙個聚集索引,因為只能有一種排序儲存的方式,但可以有多個非聚集索引,也就是多個索引目錄提供資料檢索。
使用聚集索引的時候,資料的查詢效率高,但如果對資料進行插入,刪除,更新等操作,效率會比非聚集索引低。
使用聚集索引和非聚集索引的查詢效率
對 where 子句的字段建立索引,可以大幅提公升查詢效率。
採用聚集索引進行資料查詢,比使用非聚集索引的查詢效率略高。如果查詢次數比較多,還是盡量使用主鍵索引進行資料查詢。
聯合索引
索引列為一列時為單一索引;多個列組合在一起建立的索引叫做聯合索引。
建立聯合索引時,我們需要注意建立時的順序問題,因為聯合索引 (x, y, z) 和 (z, y, x) 在使用的時候效率可能會存在差別。
聯合索引存在最左匹配原則,也就是按照最左優先的方式進行索引的匹配。比如 (x, y, z),如果查詢條件是 where x=1 and y=2 and z=3,就可以匹配上聯合索引;如果查詢條件是 where y=2,就無法匹配上聯合索引。
索引的缺點
占用儲存空間
降低資料庫寫操作的效能等
如果有多個索引還會增加索引選擇的時間
mysql索引種類(索引種類和建立索引)
一 mysql索引種類 1 加速查詢 查詢普通欄位和查詢有索引字段,哪個方式查詢速度快 根據索引來查字段速度更快 2 建立索引 為userinfo表email欄位建立索引 create index ix name on userinfo 建立欄位email索引檔案,起別名ix name為某個字段建立...
mysql 索引種類
從資料結構角度 1 b 樹索引 o log n 關於b 樹索引,可以參考 mysql索引背後的資料結構及演算法原理 2 hash索引 a 僅僅能滿足 in 和 查詢,不能使用範圍查詢 b 其檢索效率非常高,索引的檢索可以一次定位,不像b tree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多...
MySQL索引的多種型別
在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用 指向 資料,這樣就可以在這些資料結構上實現高階查詢演算法。這種資料結構,就是索引。下圖就是一種可能的索引方式示例 左邊是資料表,一共有兩列七條記錄,最左邊的是資料記錄的實體地址 為了加快col2的查詢,可以維護乙...