mysql 索引相關

索引是什麼

索引就像是一本書的目錄

索引用於快速找出在某個列中有一特定值的行,不使用索引,MySQL必須從第一條記錄開始讀完整個表,直到找出相關的行,表越大,查詢數據所花費的時間就越多,如果表中查詢的列有一個索引,MySQL能夠快速到達一個位置去搜索數據文件,而不必查看所有數據,那麼將會節省很大一部分時間。

優點與缺點

優點

  1. 大大加快查詢速度
  2. 所有字段類型均可以設置索引

缺點

  1. 創建和維護索引需要時間,數據量越多,耗時越多
  2. 索引佔用存儲空間,數據表中的數據也會有最大上線設置的,如果我們有大量的索引,索引文件可能會比數據文件更快達到上線值
  3. 當對錶中的數據進行增加、刪除、修改時,索引也需要動態的維護,降低了數據的維護速度

使用原則和場景

  1. 索引不是越多越好,需要視情況而定
  2. 頻繁更新的表應儘量的索引
  3. 頻繁用於查詢的字段進行構建索引
  4. 數據量小的字段儘量不要使用索引,查詢所有數據花費的時間比遍歷索引的數據要短,索引將沒有優化效果
  5. 字段不同值少的字段儘量不要使用索引,如性別字段僅有男女兩個不同值。

索引分類

注意:索引是在存儲引擎中實現的,也就是說不同的存儲引擎,會使用不同的索引
  • MyISAM和InnoDB存儲引擎:只支持BTREE索引, 也就是說默認使用BTREE,不能夠更換
  • MEMORY/HEAP存儲引擎:支持HASH和BTREE索引
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章