mysql如何檢視SQL語句執行效率?

2021-12-30 09:04:24 字數 1829 閱讀 4919

主要用explain命令去檢視

語法 : explain select … from … [where ...]

例如:explain select * from city

結果如下:

idselect_type

table

type

possible_keys

keykey_len

refrows

extra

1 ******

city

all345  

屬性分析

id:這是select的查詢序列號

select_type:select型別,可以有以下幾種:

******:簡單的select

primary:最外面的select

union:union中的第二個或後面的select語句

dependent union:union中的第二個或後面的select語句,取決於外面的查詢

union result:union的結果。

subquery:子查詢中的第乙個select

dependent subquery:子查詢中的第乙個select,取決於外面的查詢

derived:匯出表的select(from子句的子查詢)table : 表示這一行資料關於哪張表

type: 顯示了連線使用了哪種類別,有無使用索引,是使用explain命令分析效能瓶頸的關鍵項之一。

結果值從好到壞依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all

一般來說,得保證查詢至少達到range級別,最好能達到ref,否則就可能會出現效能問題。possible_keys:列指出mysql能使用哪個索引在該表中找到行 key:顯示mysql實際決定使用的鍵(索引)。如果沒有選擇索引,鍵是null key_len:顯示mysql決定使用的鍵長度。如果鍵是null,則長度為null。使用的索引的長度。在不損失精確性的情況下,長度越短越好 ref:顯示使用哪個列或常數與key一起從表中選擇行。 rows:顯示mysql認為它執行查詢時必須檢查的行數。 extra:包含mysql解決查詢的詳細資訊,也是關鍵參考項之一。distinct

一旦mysql找到了與行相聯合匹配的行,就不再搜尋了

not exists

mysql 優化了left join,一旦它找到了匹配left join標準的行,

就不再搜尋了

range checked for each

record(index map:#)

沒有找到理想的索引,因此對於從前面表中來的每一 個行組合,mysql檢查使用哪個索引,並用它來從表中返回行。這是使用索引的最慢的連線之一

using filesort

看 到這個的時候,查詢就需要優化了。mysql需要進行額外的步驟來發現如何對返回的行排序。它根據連線型別以及儲存排序鍵值和匹配條件的全部行的行指標來 排序全部行

using index

列資料是從僅僅使用了索引中的資訊而沒有讀取實際的行動的表返回的,這發生在對錶 的全部的請求列都是同乙個索引的部分的時候

using temporary

看到這個的時候,查詢需要優化了。這 裡,mysql需要建立乙個臨時表來儲存結果,這通常發生在對不同的列集進行order by上,而不是group by上

using where

使用了where從句來限制哪些行將與下一張表匹配或者是返回給使用者。如果不想返回表中的全部行,並且連線型別all或index, 這就會發生,或者是查詢有問題

SQL Server如何檢視SQL語句的執行時間

在sql server資料庫中,如何才能檢視sql語句的執行時間呢?本文將為您介紹查詢方法,供您參考,希望對您能夠有所幫助。下面這種是sql server中比較簡單的查詢sql語句執行時間方法,通過查詢前的時間和查詢後的時間差來計算的 declare begin date datetime decl...

SQL Server如何檢視SQL語句的執行時間

在sql server資料庫中,如何才能檢視sql語句的執行時間呢?本文將為您介紹查詢方法,供您參考,希望對您能夠有所幫助。下面這種是sql server中比較簡單的查詢sql語句執行時間方法,通過查詢前的時間和查詢後的時間差來計算的 declare begin date datetime decl...

SQL Server如何檢視SQL語句的執行時間

在sql server資料庫中,如何才能檢視sql語句的執行時間呢?本文將為您介紹查詢方法,供您參考,希望對您能夠有所幫助。下面這種是sql server中比較簡單的查詢sql語句執行時間方法,通過查詢前的時間和查詢後的時間差來計算的 declare begin date datetime decl...