什麼情況下需要建立MySQL索引?

2022-09-29 13:15:09 字數 877 閱讀 1723

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

如何判定是否需要建立索引?

1、較頻繁地作為查詢條件的字段

程式設計客棧這個都知道。什麼是教頻繁呢?分析你執行的所有s語句。最好將他們乙個個都列出來。然後分析,發現其中有些欄位在大部分的sql語句查詢時候都會用到,那麼就果斷為他建立索引。

2、唯一性太差的字段不適合建立索引

什麼是唯一性太差的字段。如狀態字段、型別字段。那些只儲存固定幾個值的字段,例如使用者登入狀態、訊息的status等。這個涉及到了索引掃瞄的特性。例如:通過索引查詢鍵值為a和b的某些資料,通過a找到某條相符合的資料,這條資料在x頁上面,然後繼續掃瞄,又發現符合a的資料出現在了y頁上面,那麼儲存引擎就會丟棄x頁面的資料,然後儲存y頁面上的資料,一直到查詢完所有對應a的資料,然後查詢b欄位,發現x頁面上面又有對應b欄位的資料,那麼他就會再次掃瞄x頁面,等於x頁面就會被掃瞄2次甚至多次。以此類推,所以同乙個資料頁可能會被多次重複的讀取,丟棄,在讀取,這無疑給儲存引擎極大地增加了io的負擔。

3、更新太頻繁地字段不適合建立索引

當你為這個字段建立索引時候,當你再次更新這個字段資料時,資料庫會自動更新他的索引,所以當這個字段更新太頻繁地時候那麼就是不斷的更新索引,效能的影響可想而知。大概被檢索幾十次程式設計客棧會更新一程式設計客棧次的字段才比較符合建立索引的規範。而如果乙個字段同乙個時間段內被更新多次,那麼果斷不能為他建立索引。

4、不會出現在where條件中的字段不該建立索引

這個相信大家都知道。

本文標題: 什麼情況下需要建立mysql索引?

本文位址: /shujuku/mysql/115187.html

什麼情況下需要建立mysql索引

1 較頻繁地作為查詢條件的字段 這個都知道。什麼是教頻繁呢?分析你執行的所有sql語句。最好將他們乙個個都列出來。然後分析,發現其中有些欄位在大部分的sql語句查詢時候都會用到,那麼就果斷為他建立索引。2 唯一性太差的字段不適合建立索引 什麼是唯一性太差的字段。如狀態字段 型別字段。那些只儲存固定幾...

什麼情況下,需要做血液透析?

血液透析 是 急慢性腎衰竭和其他一些嚴重疾病的重要方法。常見疾病的透析指徵如下 急性腎損傷 一 透析指徵 出現下列任何一種情況即可進行透析 一 血清肌酐 354umol l 4mg dl 或尿量 0.3ml kg h 持續24小時以上。二 高鉀血症,血清鉀 6.5mmol l。三 血hco3 15 ...

什麼情況下用遞迴?

遞迴的特點,可以看出遞迴可以大大縮短程式的 有意識的使用遞迴,可以用較短的 解決一些複雜的問題。甚至有些問題非得使用遞迴解決不可。那麼什麼時候我們該使用遞迴呢?遞迴演算法的 基本思想 是 把規模大的 較難解決的問題變成規模較小的 易解決的同一問題。規模較小的問題又變成規模更小的問題,並且小到一定程度...