mysql資料庫簡單優化措施
阿新 • • 發佈:2019-01-01
優化sql的一般步驟
- 通過show status瞭解各種sql的執行頻率
- 定位執行效率低的sql語句
- 通過explain分析效率低的sql
- 通過show profile分析sql
- 通過trace分析優化器如何選擇執行計劃
- 確定問題,採取措施優化
索引優化措施
mysql中使用索引的典型場景
- 匹配全值,條件所有列都在索引中而且是等值匹配
- 匹配值的範圍查詢,欄位必須在索引中
- 匹配最左字首,複合索引只會根據最左列進行查詢
- 僅僅對索引進行查詢,即查詢的所有欄位都在索引上
- 匹配列字首,比如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(表名);
如果文章對你有幫助,請去我的部落格留個言吧! 我的部落格