1. 程式人生 > >MySQL索引優化步驟總結

MySQL索引優化步驟總結

在專案使用mysql過程中,隨著系統的執行,發現一些慢查詢,在這裡總結一下mysql索引優化步驟

1.開發過程優化

開發過程中對業務表中查詢sql分析sql執行計劃(尤其是業務流水錶),主要是檢視sql執行計劃,對sql進行優化。

explain執行計劃關鍵屬性

select_type,possible_keys,key,rows

(1) select_type 訪問型別

system>const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

system:表只有一行記錄(等於系統表)

eq_ref:唯一性索引掃描,對於每個索引鍵,表中只有一條記錄與之匹配。常見於主鍵 或 唯一索引掃描。

const:表示通過索引一次就找到了,const用於比較primary key 或者 unique索引。因為只需匹配一行資料,所有很快。如果將主鍵置於where列表中,mysql就能將該查詢轉換為一個const

效能最好的是const,最差的是ALL

(2) possible_keys

查詢涉及到的欄位上存在索引,則該索引將被列出,但不一定被查詢實際使用.

(3) key

實際使用的索引,如果為NULL,則沒有使用索引(這條很關鍵)。

(4) rows

根據表統計資訊及索引選用情況,大致估算出找到所需的記錄所需要讀取的行數,越小越好.

2.上線前提交DBA稽核(流程)

對於關鍵系統上線前需要把資料表結構和索引提交DBA稽核(防止出現沒有索引)。

3.持續優化

部分業務表上線時由於資料量很小不會產生慢查詢問題,或者上線後隨著業務需求變化,可能會產生慢查詢問題。

需要持續優化,可以自己查詢sql日誌,找出慢查詢,關注dba發的慢查詢sql(一般力度比較粗,一般只有執行時間,沒有執行頻次),

對於執行頻次比較多sql慢查詢的標準(執行時間)一般會要求更高。

藉助自動化運維工具,統計sql執行時間和頻率來區分慢查詢,比如報表服務執行超過1s為慢查詢,而一個執行比較頻繁的sql(2C業務)超過50ms就定義為慢查詢.