explain 分析 :MySQL優化之慢查詢的定位及優化-SQL優化必備

前言:

explain,慢查詢優化機制是整個sql優化的基本技能,因此掌握explain非常有必要,本篇博文就是要介紹一下explain

一、SQL語句優化的一般步驟:

(1)通過 show status 命令瞭解各種 SQL 的執行效率;

(2)定位執行效率較低的 SQL 語句(重點是 Select);

(3)通過 explain 分析低效率的 SQL 語句的執行情況;

(4)確實問題並採取相應的優化措施;

二、優化

1、show status 命令

格式: show [session | global] status like …

如果不寫[session | global],默認的是session,即取出當前回話的執行情況;

show status like "uptime"  //查詢MySql啓動的時間;

show status like "com_select" //查詢MySql的查詢次數

show status like "com_insert" //查詢MySql的插入次數

show status like "com_update" //查詢MySql的更新次數

show status like "com_delete" //查詢MySql的刪除次數

如果想查詢所有的(即MySql啓動到現在的信息), 則增加 global 參數;

show global status like "uptime"  //查詢MySql啓動的時間;
show global status like "com_select" //查詢MySql的查詢次數
show global status like "com_insert" //查詢MySql的插入次數
show global status like "com_update" //查詢MySql的更新次數
show global status like "com_delete" //查詢MySql的刪除次數 
show global status like "connections" //查詢MySQL的連接數
show global status like "slow_queries" //獲取慢查詢的次數

2、如何查看和修改慢查詢的時間?

默認情況下,MySql認爲超過 10 秒纔是一個慢查詢;

(1)顯示當前慢查詢設置的時間:show variables like “long_query_time” ;

(2)修改慢查詢的設置時間爲1秒:set long_query_time=1

這時如果出現一條語句執行時間超過 1 秒, 就會統計到 show global status like "slow_queries" 查詢的結果中;

3、如何把慢查詢的 sql 記錄到日誌中?

默認的情況下,mysql不會記錄慢查詢的 sql 日誌;

慢查詢的啓動:傳送門

慢查詢的啓動及慢查詢日誌分析:傳送門

擴展知識

(1)一般情況下,分號作爲命令結束符;在寫的存儲過程或函數中也有分號,如果不將命令結束符修改,則會使存儲過程或函數提前結束;所以爲了存儲過程或函數能夠正常執行,我們需要修改命令結束符。

delimiter $$

(2)刪除自定義函數 rand_string

drop function rand_string $$

在這裏插入圖片描述

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