mysql 中 sql語句 explain(一)

來源:互聯網
上載者:User

標籤:mysql explain

參考:http://www.2cto.com/database/201307/230048.html

http://blog.csdn.net/zhuxineli/article/details/14455029

explain是用來分析mysql如何使用索引來處理select語句以及串連表。可以協助選擇更好的索引和寫出更最佳化的查詢語句。

1. id 

語句的執行順序標識。是指select語句執行的順序

2、select_type:  2.1、simple 

    簡單類型,只要 語句中沒有子查詢或union。

EXPLAIN SELECT * FROM `fm_company`

   2.2 primary 

最外面的select,在有子查詢的語句中,最外面的select查詢就是primary。查詢關鍵字和主鍵無關

EXPLAIN SELECT * FROM `fm_company` AS t1 WHERE orgId IN(SELECT orgId FROM fm_company AS t2 WHERE t2.`id` = 1)


2.3  union

 union語句的後面那個 select 執行執行語句。

EXPLAIN SELECT * FROM `fm_company` AS t1 UNIONSELECT * FROM `fm_company` AS t2
 2.4 dependent subquery 

  子查詢中內層中第一個select語句。

EXPLAIN SELECT * FROM `fm_company` AS t1 WHERE orgId IN(SELECT orgId FROM fm_company AS sub_t1 WHERE sub_t1.`id` = 148)
   2.5、devived 

   派生表(中間表)的查詢語句

EXPLAIN  SELECT  * FROM (SELECT * FROM `fm_company` AS t1 UNIONSELECT * FROM `fm_company` AS t2)  subQuery
2.6、dependent  union 

  子查詢中union且為union中第二個select開始的後面所有select,依賴於外部的結果集。

EXPLAIN SELECT * FROM `fm_company` as t1 WHERE orgId IN(SELECT orgId FROM fm_company as sub_t1 WHERE sub_t1.`id` = 148 union SELECT orgId FROM fm_company AS sub_t2 WHERE sub_t2.`id` = 149)
2.7 union result  

顧名思義就是 union中合并的結果


3. table 
顯示這一步所訪問的資料庫中表的名稱 4. type 這列很重要,顯示了串連使用了哪種類別,有無使用索引。type代表查詢執行計畫(QEP)中指定的表使用的串連方式。從最好到最差的連線類型為 
4.1.systemsystem為const一個特例,即表中只有一條記錄。這個是及特殊的情況
4.2.const

const是在where條件以常量作為查詢條件,表中最多有一條記錄匹配。由於是常量,所以實際上只需要讀一次。

const用於比較primary key 或者unique索引。因為只匹配一行資料,所以很快

記住一定是用到primary key 或者unique,並且只檢索出兩條資料的 情況下才會是const。如下面這個sql。直接用主鍵id 尋找

 EXPLAIN SELECT * FROM fm_company WHERE id=148

4.3. eq_reg 最多隻會有一條匹配結果,一般是通過主鍵或是唯一索引來訪問。一般會出現在串連查詢的語句中。
mysql手冊是這樣說的:"對於每個來自於前面的表的行組合,從該表中讀取一行。這可能是最好的聯結類型,除了const類型。它用在一個索引的所有部分被聯結使用並且索引是UNIQUE或PRIMARY KEY"。eq_ref可以用於使用=比較帶索引的列
 EXPLAIN SELECT * FROM fm_company t1  ,fm_company t2  WHERE t1.id=t2.id

後面有時間再研究吧。
4. ref、5. range、6.index、7. all

mysql 中 sql語句 explain(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.