程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL查詢分析器EXPLAIN或DESC

MySQL查詢分析器EXPLAIN或DESC

編輯:MySQL綜合教程


MySQL查詢分析器EXPLAIN或DESC   MySQL可以通過EXPLAIN或DESC來查看並分析SQL語句的執行情況,如下需要計算2006年所有公司的銷售額,需要關聯sales表和company表,並且對money字段做求和操作,相應SQL如下:
  Sql代碼   EXPLAIN SELECT SUM(money) FROM sales s,company c WHERE s.company_id=c.id AND s.year=2006 \G;      *************************** 1. row ***************************              id: 1  www.2cto.com     select_type: SIMPLE           table: s            type: ALL   possible_keys: NULL             key: NULL         key_len: NULL             ref: NULL            rows: 1000           Extra: Using where      *************************** 2. row ***************************              id: 1     select_type: SIMPLE           table: c            type: ref   possible_keys: index_company_id             key: index_company_id         key_len: 5             ref: sakila.c.company_id            rows: 1    www.2cto.com           Extra: Using where; Using index           列的說明:     select_type: 表示SELECT的類型,常見的有下面幾種         SIMPLE: 簡單表,不使用連接或子查詢的         PRIMARY: 主查詢,即外層的查詢         UNION: UNION中的第二個或者後面的查詢語句         SUBQUERY: 子查詢中的第一個SELECT       table: 輸出結果集的表       type: 表示表的連接類型,性能由好到差的連接類型為下面順序         system: 表中只有一行,即常量表         const: 單表中最多有一個匹配行,如primary key或unique index         eq_ref: 對於前面的每一行,在此表中只查詢一條記錄,也就是多表連接中使用primary key或unique index         ref: 與eq_ref類似,區別在於不是使用primary key或unique index,而是使用普通索引         ref_or_null: 與ref類型,區別在於條件中包含對null的查詢         index_merge: 索引合並優化         unique_subquery: in的後面是一個查詢主鍵字段的子查詢         index_subquery: 與unique_subquery類似,區別在於in的後面是查詢非唯一索引字段的子查詢  www.2cto.com           range: 單表中的范圍查詢         index: 對於前面的每一行,都通過查詢索引來得到數據         all: 對於前面的每一行,都通過掃描全表來得到數據       possible_keys: 查詢時可能用到的索引       key: 查詢時實際使用到的索引       key-len: 索引字段的長度       rows: 掃描行的數量       Extra: 執行情況的說明和描述   通過EXPLAIN的分析,確認在上面的例子中是對sales表的全表掃描導致效率不理想,通過對sales表創建索引:  www.2cto.com   Sql代碼   CREATE INDEX index_sales_year ON sales(year);         創建索引後,再對該查詢語句分析如下: Sql代碼   EXPLAIN SELECT SUM(money) FROM sales s,company c WHERE s.company_id=c.id AND s.year=2006 \G;      *************************** 1. row ***************************              id: 1     select_type: SIMPLE           table: s            type: ref   possible_keys: index_seles_year             key: index_sales_year         key_len: 2             ref: const            rows: 1           Extra: Using where      *************************** 2. row ***************************              id: 1    www.2cto.com     select_type: SIMPLE           table: c            type: ref   possible_keys: index_company_id             key: index_company_id         key_len: 5             ref: sakila.c.company_id            rows: 1           Extra: Using where; Using index  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved