mysql優化學習筆記

優化sql的通常步驟

  1. 經過show status瞭解各類sql的執行頻率mysql

  2. 定位執行效率低的sql語句sql

  3. 經過explain分析效率低的sql性能

  4. 經過show profile分析sql優化

  5. 經過trace分析優化器如何選擇執行計劃code

  6. 肯定問題,採起措施優化blog

索引優化措施

  1. mysql中使用索引的典型場景索引

    1. 匹配全值,條件全部列都在索引中並且是等值匹配get

    2. 匹配值的範圍查找,字段必須在索引中博客

    3. 匹配最左前綴,複合索引只會根據最左列進行查找table

    4. 僅僅對索引進行查詢,即查詢的全部字段都在索引上

    5. 匹配列前綴,好比like 'ABC%',若是是like '%aaa'就不能夠

    6. 若是列名是索引,使用column is null會使用索引

  2. 存在索引但不會使用索引的典型場景

    1. 以%開頭的like查詢不能使用b樹索引

    2. 數據類型出現隱式轉換不能使用索引

    3. 複合索引,查詢條件不符合最左列原則

    4. 用or分割的條件,若是前面的條件有索引,然後面的條件沒有索引

  3. 查看索引使用的狀況

show status like 'Handler_read%';

若是Handler_read_rnd_next的值比較高,說明索引不正確或者查詢沒有使用到索引

簡單實用的優化方法

  1. 按期檢查表和分析表
    分析表語法:

analyze table 表名;

檢查表語法:

check table 表名;
  1. 按期優化表

    • 對於字節大小不固定的字段,數據更新和刪除會形成磁盤空間不釋放,這時候就行優化表,能夠整理磁盤碎片,提升性能
      語法以下:

optimize table user(表名);

若是文章對你有幫助,請去個人博客留個言吧! 個人博客

相關文章
相關標籤/搜索