mysql慢查詢,處理sql語句執行速度慢問題

一、根據慢日誌定位慢查詢sql


# 臨時開啓慢日誌(如重啓數據庫,還會改爲默認值off,如需永久改需要修改配置文件)
show variables like '%slow_query_log%' ;(如果查詢出的值爲off則需要開啓慢日誌)
set global slow_query_log=on;(開啓慢日誌)

# 設置1秒以上爲慢查詢(如重啓數據庫,還會改爲默認值off,如需永久改需要修改配置文件)
show variables like '%long_query_time%' ;(默認值爲10,需要將該值改低一些,使得慢sql可以被檢測出來)
set global long_query_time=1;

# 查看相關設置是否已經生效
show variables like '%slow_query_log%' ;
# 如果使用圖形化工具連接mysql,修改屬性值沒有生效,則重啓該工具再查詢慢查詢時間
show variables like '%long_query_time%' ;


# 慢查詢次數
SHOW STATUS LIKE '%Slow_queries%';

# 調用接口等方法執行慢sql

# 慢查詢次數會增加
SHOW STATUS LIKE '%Slow_queries%';

# 查看日誌文件文件位置,查看詳細信息
show variables like '%slow_query_log_file%' ;

# 根據日誌文件位置,找到日誌文件並打開


 

二、使用explain分析sql

#根據日誌裏查詢出的sql,在sql前面加上explain並執行
#例 explain select * from table

當type爲index/all 則代表有全表掃描,需要注意是否可以不全表掃描

key表示用了哪個字段作爲索引

當extra 爲using index則代表走了索引,當extra爲using filesort或using temporary時,則需要進行優化

三、修改sql或者儘量讓sql走索引

# 分析sql語句,注意表關聯的字段是否是索引,如果不是索引,並且表數據量大,則sql執行慢
# 需要加索引的加索引,需要更改表關聯字段的改關聯字段

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章