先來看看explain命令的表頭
表頭查詢的序列號,包含一組數字,表示了乙個查詢過程中select子句或操作表的順序。
有三種情況:
(1)id相同,表示順序執行,自上而下。
執行順序:t1、t3、t2。
(2)id不同且是子查詢,則id值越大,表示其優先順序越高,越先被執行。
執行順序:t3、t1、t2。
(3)id既有相同,也有不同。id值越大,優先順序越高,優先執行;id值相同,優先順序相同,自上而下執行。
執行順序:t3、derived2、t1
注:derived2表示id為2的衍生表,也就是t3的衍生表,顯然子查詢是針對t3表的。
******:不包含子查詢和聯合查詢的簡單查詢。
primary:如果乙個查詢中包含有子查詢,其最外層查詢是primary。如1(2)中對t1和t3的子查詢都是subquery,對t2的查詢(最外層)是primary。
subquery:是乙個子查詢,可以出現在select或where子句中。
derived:在from子句**現的子查詢,會生成乙個衍生表,存放查詢結果,用於外層的查詢。
union:出現在union之後的查詢。如果出現在from子句之後的子查詢中,則外層的查詢會被標記為derived。
union result:結果是從union的表中獲得的查詢。
小例子:全外連線的explain
p.s. 7種join語句寫法可參考另一篇文章【mysql】記錄7種sql join語句
表名:表示當前查詢是針對資料庫中哪個表進行的。
MySQL explain命令詳解
explain顯示了mysql如何使用索引來處理select語句以及連線表。在分析慢查詢時,可以幫助選擇更好的索引和寫出更優的查詢語句。使用方法 explain select id,name from a,b where a.id b.idexplain列的解釋 值意義 distinct 一旦mys...
MySQL explain命令詳解(二)
explain命令的表頭 表示該查詢的型別,有如下8種值 system 表示表中只有一行記錄。const 通過索引查詢,且一次找到記錄,針對主鍵或唯一鍵的索引,如使用者id。例子中,主鍵作為where子句的條件,且為單個值,作為常量處理,即id為2的查詢為const型別 由於子查詢只有一行記錄,因此...
MySQL MariaDB grant命令詳解
mysql mariadb中可以給你乙個使用者授予如select,insert,update,delete等其中的乙個或者多個許可權,主要使用grant命令,用法格式為 grant 許可權 on 資料庫物件 to 使用者 一 grant 普通資料使用者,查詢 插入 更新 刪除 資料庫中所有表資料的權...