數據庫優化之索引優化

MySQL支持的索引類型

  • B-tree索引
  • Hash索引

B-tree索引

特色

  • 加快數據的查詢速度
  • 更適合進行範圍查找

原理

  • B+樹的結構存儲數據

適應範圍

  • 全值匹配的查詢
  • 匹配最左前綴的查詢
  • 匹配列前綴查詢
  • 匹配範圍值的查詢
  • 精確匹配左前列並範圍匹配另一列
  • 只訪問索引的查詢

限制

  • 若是不是按照索引最左列開始查找,則沒法使用索引
  • 使用索引時不能跳過索引中的列
  • Not in 和<>操做沒法使用索引
  • 若是查詢中有某個列的範圍查詢,則其右邊全部列都沒法使用索引

Hash索引

特色

  • Hash索引時基於Hash表實現的,只有查詢條件精確匹配Hash索引中的全部列,纔可以使用Hash索引。
  • 對於Hash索引中的全部列,存儲引擎都會爲每一行計算一個Hash碼,Hash索引中存儲的就是Hash碼

原理

  • key-vlaue

限制

  • 二次讀取
  • 沒法用於排序
  • 不支持部分索引查找也不支持範圍查找
  • Hash碼的計算可能存在Hash衝突

爲何要使用索引

  • 大大減小存儲引擎須要掃描的數據量
  • 幫助咱們進行排序避免使用臨時表
  • 把隨機I/O變爲順序I/O

索引是否是越多越好

  • 索引會增長寫操做的成本
  • 太多的索引會增長查詢優化器的選擇時間

相關連接
《 數據庫優化之什麼影響性能》《數據庫優化之實例和故事 》《 數據庫優化之結構設計》數據庫

做者:不動峯
博客園: http://www.cnblogs.com/mylly/ 版權全部,歡迎保留原文連接進行轉載:)
相關文章
相關標籤/搜索