使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句的。分析你的查詢語句或是表結構的效能瓶頸
l 表的讀取順序explian + sql 語句l 資料讀取操作的操作型別
l 哪些索引可以使用
l 哪些索引被實際使用
l 表之間的引用
l 每張表有多少行被優化器查詢
explain描述select查詢的序列號select * from student;
,包含一組數字,表示查詢中執行
select
子句或操作表的順序
id相同:執行順序由上至下舉例:id不同:如果是子查詢,id的序號會遞增,id值越大優先順序越高,越先被執行
id相同不同:同時存在
-- id 相同的 從上至下 依次進行-- id 完全不同的 id越大越先被執行-- id 有相同也有不相同的-- id 相同的為一組 , 從上往下執行
-- id 不同的為一組,在所有組中, id 值越大的越優先執行
查詢的型別:主要是用於區別:普通查詢、聯合查詢、子查詢等的複雜查詢
顯示這一行資料是哪一張表的
type顯示的是訪問型別,是較為重要的乙個指標,結果值從最好到最壞依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all
需要記憶的
system>const>eq_ref>ref>range>index>all
一般來說,得保證查詢至少達到 range 級別,最好能達到 ref。
possible_keys: 可能使用的
keykey: 實際使用的索引。如果為
null
,則沒有使用索引
SQL執行計畫
引言 實際專案開發中,由於我們不知道實際查詢的時候資料庫裡發生了什麼事情,資料庫軟體是怎樣掃瞄表 怎樣使用索引的,因此,我們能感知到的就只有 sql語句執行的時間,在資料規模不大時,查詢是瞬間的,因此,在寫sql語句的時候就很少考慮到效能的問題。但是當資料規模增大,如千萬 億的時候,我們運 行同樣的...
Sql優化 執行計畫
一段sql 寫好以後,可以通過檢視sql的執行計畫,初步 該sql在執行時的效能好壞,尤其是在發現某個sql語句的效率較差時,我們可以通過檢視執行計畫,分析出該sql 的問題所在。1 開啟熟悉的檢視工具 pl sql developer。在pl sql developer中寫好一段sql 後,按f5...
Sql執行計畫解析
1.我們怎麼知道sql執行效果怎樣哪?我們需要查詢sql的執行計畫。mysql優化器是怎樣執行我們的請求的。explain select from user where username lai and password lai 2.首先通過mysql執行計畫,我們可以知道sql如何使用索引。雖然我...