經過show status瞭解各類sql的執行頻率mysql
定位執行效率低的sql語句sql
經過explain分析效率低的sql性能
經過show profile分析sql優化
經過trace分析優化器如何選擇執行計劃code
肯定問題,採起措施優化blog
mysql中使用索引的典型場景索引
匹配全值,條件全部列都在索引中並且是等值匹配get
匹配值的範圍查找,字段必須在索引中博客
匹配最左前綴,複合索引只會根據最左列進行查找table
僅僅對索引進行查詢,即查詢的全部字段都在索引上
匹配列前綴,好比like 'ABC%',若是是like '%aaa'就不能夠
若是列名是索引,使用column is null會使用索引
存在索引但不會使用索引的典型場景
以%開頭的like查詢不能使用b樹索引
數據類型出現隱式轉換不能使用索引
複合索引,查詢條件不符合最左列原則
用or分割的條件,若是前面的條件有索引,然後面的條件沒有索引
查看索引使用的狀況
show status like 'Handler_read%';
若是Handler_read_rnd_next的值比較高,說明索引不正確或者查詢沒有使用到索引
按期檢查表和分析表
分析表語法:
analyze table 表名;
檢查表語法:
check table 表名;
按期優化表
對於字節大小不固定的字段,數據更新和刪除會形成磁盤空間不釋放,這時候就行優化表,能夠整理磁盤碎片,提升性能
語法以下:
optimize table user(表名);
若是文章對你有幫助,請去個人博客留個言吧! 個人博客