sql優化前準備:
a,通過show status 指令了解sql語句的執行效率
如:
Com_xxx表示每個xxx語句執行的次數,我們通常比較關心的是以下幾個參數
Com_select:執行select操作的次數,每次累加1
Com_insert:。。。。。。。
Com_update:。。。。。。。
Com_delete:。。。。。。。。
這些參數是針對所有的儲存引擎的查詢,你也可以隻是查詢一種儲存引擎的,但是傳回的結果不一樣,執行條數如下:
Innodb_rows_read:但是這個命名表示的是SELECTT查詢傳回的行數
Innodb_rows_inserted:。。。。。。。。。。
Innodb_rows_updateed:。。。。。。。。。。
Innodb_rows_deleteed:。。。。。。。。。。。
另外下面幾個參數也是了解資料庫的基本情況:
Connection:試圖連接配接mysql伺服器的次數
Update:伺服器工作時間。
Slow_queries:慢查詢的次數。
b,定位執行效率較低的sql語句
方式一:可以使用慢查詢日志檢視那些執行效率較低的sql語句,
方式二:用show processlist 指令檢視目前的msyql進行的線程包括線程的狀态,是否鎖表等,可以時時檢視sql的執行情況,同時對于鎖表進行優化;
c,可以使用explain 加上sql語句測試該sql語句的執行效率,計劃
explain select * from shuju資料庫.資料表 where id = 123;
d,我們也可以通過show profile 分析SQL 可以使用
檢視是否支援profile:同時profiling預設是關閉的,可以通過set語句在Session級别開啟profiling