索引能夠提升數據的檢索效率,也能夠下降數據庫的IO成本,而且索引還能夠下降數據庫的排序成本。排序分組操做主要消耗的就是CPU資源和內存,因此可以在排序分組操做中好好的利用索引將會極大地下降CPU資源的消耗。數據庫
如何斷定是否須要建立索引?性能
一、較頻繁地做爲查詢條件的字段.net
這個都知道。什麼是教頻繁呢?分析你執行的全部SQL語句。最好將他們一個個都列出來。而後分析,發現其中有些字段在大部分的SQL語句查詢時候都會用到,那麼就果斷爲他創建索引。htm
二、惟一性太差的字段不適合創建索引排序
什麼是惟一性太差的字段。如狀態字段、類型字段。那些只存儲固定幾個值的字段,例如用戶登陸狀態、消息的status等。這個涉及到了索引掃描的特性。例如:經過索引查找鍵值爲A和B的某些數據,經過A找到某條相符合的數據,這條數據在X頁上面,而後繼續掃描,又發現符合A的數據出如今了Y頁上面,那麼存儲引擎就會丟棄X頁面的數據,而後存儲Y頁面上的數據,一直到查找完全部對應A的數據,而後查找B字段,發現X頁面上面又有對應B字段的數據,那麼他就會再次掃描X頁面,等於X頁面就會被掃描2次甚至屢次。以此類推,因此同一個數據頁可能會被屢次重複的讀取,丟棄,在讀取,這無疑給存儲引擎極大地增長了IO的負擔。索引
三、更新太頻繁地字段不適合建立索引內存
當你爲這個字段建立索引時候,當你再次更新這個字段數據時,數據庫會自動更新他的索引,因此當這個字段更新太頻繁地時候那麼就是不斷的更新索引,性能的影響可想而知。大概被檢索幾十次會更新一次的字段才比較符合創建索引的規範。而若是一個字段同一個時間段內被更新屢次,那麼果斷不能爲他創建索引。資源
四、不會出如今where條件中的字段不應創建索引get
這個相信你們都知道。效率