索引於mysql資料庫,就像是目錄於書籍,讀者可以通過目錄可以快速定位到自己想要的內容。同時,索引基本是對mysql進行查詢效能優化最有效的手段。
因為mysql的索引是在引擎層而不是伺服器層實現的,所以不同儲存引擎的索引的種類和工作方式是不同的,即便看起來相同,底層實現邏輯也可能大相徑庭。
b-tree索引(其實使用b+tree實現)
雜湊索引
innodb引擎有個自帶的"自適應雜湊索引"功能可以自動在b-tree索引上再建立乙個雜湊索引,使b-tree具有一些雜湊索引的優點。
空間資料索引(r-tree)
全文索引
全文索引做的事情更類似搜尋引擎,而不是簡單的where條件匹配。
在相同的列上同時建立全文索引和基於值得b-tree索引不會有衝突,全文索引適用於match against操作,而不是普通的where條件操作。
大大減少了伺服器需要掃瞄的資料量
可以幫助伺服器避免排序和臨時表
可以將隨機i/o變為順序i/o
索引的優點在中到大型表中才能得到體現,對於小型表直接全表查詢更高效,對於超大型錶用分庫分表等策略更高效。
提高索引的選擇性,可以顯著提公升索引的效能。索引的選擇性,指的是不重複的索引值(基數,cardinality)和資料表的記錄總數(#t)的比值,範圍從1 / #t到1之間。索引的選擇性越高,查詢效率越高,因為選擇性搞的索引可以讓mysql查詢時過濾掉更過多的行。值得一提,唯一性索引的選擇性是1,這是最好的索引選擇性,效能也是最好的。
使用explain可以分析sql語句,分析的語句中會有乙個type值,使用索引後這個type值會有很多不同,下面對不同type值的含義做乙個歸類(**),按索引由好到差逐一列出:
MySQL索引入門
索引就相當於表的目錄一樣,可以提高我們查詢資料的效率,是一種資料結構。常見的mysql主要有兩種結構 hash索引和b 樹索引。使用哪種資料結構跟儲存引擎有關,innodb引擎預設使用的是b 樹。補充 b 樹索引和雜湊索引的區別?什麼場景不適合使用索引 2 對於那些只有很少資料值的列不適合建立索引 ...
mysql索引入門簡介
舉個例子 若將資料庫比作一本書,那麼索引就是書的目錄,用來提高查詢的速度。通過索引,查詢資料時可以不必讀完記錄的所有資訊,而只是查詢索引列。表的不同的儲存引擎定義了每個表的最大索引數和最大索引長度。所有儲存引擎對每個表至少支援16個索引,總索引長度至少為256b,有些儲存引擎支援更多的索引數和更大的...
mysql索引入門總結
這是一篇適合初學者看的索引入門部落格,耐心看完,會學會的,參考總結出來的!索引是表的目錄,類似於字典中的目錄,用於快速定位查詢資料,索引會儲存在額外的檔案中。索引可以提高查詢速度,會減慢寫入速度,索引的缺點市建立和維護索引需要耗費時間。索引也不是越多越好,索引雖然可以提高查詢效率,但同時頁降低了in...