MySQL索引什么情況下創建

索引可以提高數據的檢索效率,也可以降低數據庫的io成本,并且索引還可以降低數據庫的排序成本。排序索引操作主要消耗的就是cpu資源和內存,所以能夠在排序分組操作中好好的利用索引將會極大地降低cpu資源的消耗。

如何判定是否需要創建索引?
1、較頻繁地作為索引條件的字段
這個都知道。什么是教頻繁呢?分析你執行的所有sql語句。最好將他們一個個都列出來。然后分析,發現其中有些字段在大部分的sql語句查詢時候都會用到,那么就果斷為他建立索引。
2、唯一性太差的字段不適合建立索引
什么是唯一性太差的字段。如狀態字段、類型字段。那些只存儲固定幾個值的字段,例如索引狀態、消息的status等。這個涉及到了索引掃描的特性。例如:通過索引查找鍵值為a和b的某些數據,通過a找到某條相符合的數據,這條數據在x頁上面,然后繼續掃描,又發現符合a的數據出現在了y頁上面,那么存儲引擎就會丟棄x頁面的數據,然后存儲y頁面上的數據,一直到查找完所有對應a的數據,然后查找b字段,發現x頁面上面又有對應b字段的數據,那么他就會再次掃描x頁面,等于x頁面就會被掃描2次甚至多次。以此類推,所以同一個數據頁可能會被多次重復的讀取,丟棄,在讀取,這無疑給存儲引擎極大地增加了io的負擔。
3、索引太頻繁地字段不適合創建索引
當你為這個字段創建索引時候,當你再次更新這個字段數據時,數據庫會自動更新他的索引,所以當這個字段更新太頻繁地時候那么就是不斷的更新索引,性能的影響可想而知。大概被檢索幾十次會更新一次的字段才比較符合建立索引的規范。而如果一個字段同一個時間段內被更新多次,那么果斷不能為他建立索引。
4、不會出現在where條件中的字段不該建立索引
這個相信大家都知道。

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享