MySQL如何定位並優化慢查詢sql

2022-05-12 08:44:13 字數 1314 閱讀 2514

show variables like'%query%' 

查詢慢日誌相關資訊

slow_query_log 預設是off關閉的,使用時,需要改為on 開啟      

slow_query_log_file 記錄的是慢日誌的記錄檔案

long_query_time 預設是10s,每次執行的sql達到這個時長,就會被記錄

show status like'%slow_queries%' 

檢視慢查詢狀態

slow_queries 記錄的是慢查詢數量  當有一條sql執行一次比較慢時,這個vlue就是1 (記錄的是本次會話的慢sql條數)

注意:如何開啟慢查詢 : set global slow_query_log = on;

將預設時間改為1s: set global long_query_time = 1;

(設定完需要重新連線資料庫,ps:僅在這裡改的話,當再次重啟資料庫服務時,所有設定又會自動恢復成預設值,永久改變需去my.ini中改)

在要執行的sql前加上explain  例如:explain select menu_name from t_sys_menu order by menu_id desc;

接著看explain的關鍵字段

如果發現type的值是最後兩個中的其中乙個時,證明語句需要優化了。

mysql查詢優化器會根據具體情況自己判斷走哪個索引,不一定是走主鍵(explain中的key可以看到走的哪個key)具體情況根據具體情況來定,當你要強制執行走某乙個key時:

在查詢的最後加上 force index(primary); 強制走主鍵的

最左匹配原則的概念參考:

成因:

當通過(col3,col2)這樣的聯合索引去查詢時,可以看到也是乙個b+樹的結構向下查詢,若直接通過col2去查詢,無法直接查詢到34、77。也就用不到這個聯合索引了。

1.資料量小的表不需要建立索引,建立會增加額外的索引開銷。

2.資料變更需要維護索引,因此更多的索引意味著更多的維護成本。

3.更多的索引意味著也需要更多的空間。

MySQL如何定位並優化慢查詢sql

show variables like query 查詢慢日誌相關資訊 slow query log 預設是off關閉的,使用時,需要改為on 開啟 slow query log file 記錄的是慢日誌的記錄檔案 long query time 預設是10s,每次執行的sql達到這個時長,就會被記...

如何定位並優化慢查詢Sql

主要關注下述三個變數 long query time show query log file show query log 慢查詢sql會被記錄到show query log file 日誌檔案中。show variables like quer 查詢相關變數 show status like sh...

如何定位並優化慢查詢sql

慢查詢日誌的作用 查詢慢查詢日誌是否開啟 以及 日誌存放的路徑 show variables like slow query 查詢慢查詢sql的數量 查詢慢查詢sql的數量 show status like slow queries 開啟慢日誌命令 set global slow query log...