MySQL支持的索引類型
B-tree索引
特色
原理
適應範圍
- 全值匹配的查詢
- 匹配最左前綴的查詢
- 匹配列前綴查詢
- 匹配範圍值的查詢
- 精確匹配左前列並範圍匹配另一列
- 只訪問索引的查詢
限制
- 若是不是按照索引最左列開始查找,則沒法使用索引
- 使用索引時不能跳過索引中的列
- Not in 和<>操做沒法使用索引
- 若是查詢中有某個列的範圍查詢,則其右邊全部列都沒法使用索引
Hash索引
特色
- Hash索引時基於Hash表實現的,只有查詢條件精確匹配Hash索引中的全部列,纔可以使用Hash索引。
- 對於Hash索引中的全部列,存儲引擎都會爲每一行計算一個Hash碼,Hash索引中存儲的就是Hash碼
原理
限制
- 二次讀取
- 沒法用於排序
- 不支持部分索引查找也不支持範圍查找
- Hash碼的計算可能存在Hash衝突
爲何要使用索引
- 大大減小存儲引擎須要掃描的數據量
- 幫助咱們進行排序避免使用臨時表
- 把隨機I/O變爲順序I/O
索引是否是越多越好
- 索引會增長寫操做的成本
- 太多的索引會增長查詢優化器的選擇時間
相關連接
《 數據庫優化之什麼影響性能》、《數據庫優化之實例和故事 》、《 數據庫優化之結構設計》數據庫
做者:不動峯
博客園:
http://www.cnblogs.com/mylly/ 版權全部,歡迎保留原文連接進行轉載:)