mysql 慢查詢日誌 explain詳解

2021-09-03 01:42:22 字數 1691 閱讀 6231

show variables like 'slow_query_log';

show variables like 'slow_query%';

show variables like 'long_query_time';

set global slow_query_log = 'on';

set global slow_query_log_file = 'c:/users/desktop';

set global long_query_time = 1;

explain 用於檢視執行計畫的資訊。 

explain select username from a, b where a.id = b.id;

explain select username from a, b using(id);

table: 表名

type: 連線的型別(效率遞減)

system:從const中查詢的記錄,有且僅有一行滿足條件。或者說查詢的表中只有一條記錄。

const:由主鍵或者唯一鍵作為查詢條件,由於只有一條,查詢的記錄被優化器視為常量

eq-ref:唯一性索引掃瞄。

eg. (b.mid 為 主鍵, a.mid 可能為普通字段) select * from a, b where a.mid = b.mid;

ref:非唯一性索引掃瞄。索引不是主鍵或者唯一索引。

eg. (a表中可能含有多個相同的sid。sid不具有唯一性。) select * from a where a.sid = 10;

fulltext:全文索引,(優先順序高於普通索引)

eg. alter table a add fulltext(username);

select * from a match(username) against('tom', 'selina');

ref_or_null:在ref的基礎上增加對null的檢測

eg. select * from a where a.sid = 10 or sid is null;

coalesce() ifnull() isnull() nullif()

index_merge:索引合併

eg. (username,password都是索引) select * from user where username = 'tom' and password = 'tom1';

unique_subquery

eg. (id是主鍵) select * from a where id in (select id from a where userid = 10);

index_subquery

eg. (username普通索引) select * from a where username in (select username from a where company = "oracle");

range: 檢索給定範圍的索引

eg. select * from a where a.age > 20;

index: 先讀索引,再讀實際的行,結果還是全表掃瞄

eg. select count(*) from a;

all: 全表掃瞄

eg. select * from a;

mysql開啟慢查詢日誌 MySQL慢日誌體系建設

慢查詢日誌是mysql提供的一種日誌記錄,用來記錄在mysql中響應時間超過閾值的sql語句,在很大程度上會影響資料庫整體的效能,是mysql優化的乙個重要方向。在58的雲db平台建設中,慢sql系統作為乙個非常重要功能模組,不僅是dba日常運維使用,我們也希望通過該功能可以協助開發人員更快速定位業...

mysql慢日誌時間 MySQL慢查詢日誌優化

一 慢查詢日誌概念 mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。long query time的預設值為10,意思是執行10s以上的語句。預設情況下,mys...

mysql 慢日誌 MYSQL慢查詢和日誌

一 簡介 開啟慢查詢日誌,可以讓mysql記錄下查詢超過指定時間的語句,通過定位分析效能的瓶頸,才能更好的優化資料庫系統的效能。二 引數說明 slow query log 慢查詢開啟狀態 slow query log file 慢查詢日誌存放的位置 這個目錄需要mysql的執行帳號的可寫許可權,一般...