## EXPLAIN查詢分析語句
```sql
explain [extended] select SQL語句 [\G];
```
extended 語句將產生附加信息:
+ id SELECT識別符。這是SELECT的查詢序列號
+ select_type SELECT類型,可以為以下任何一種
|類型|說明|
|-|-|
|SIMPLE|簡單SELECT(不使用UNION或子查詢)|
|PRIMARY|最外面的SELECT|
|UNION|UNION中的第二個或后面的SELECT語句|
|DEPENDENT UNION|UNION中的第二個或后面的SELECT語句,取決于外面的查詢|
|UNION RESULT|UNION 的結果|
|SUBQUERY|子查詢中的第一個SELECT|
|DEPENDENT SUBQUERY|子查詢中的第一個SELECT,取決于外面的查詢|
|DERIVED|導出表的SELECT(FROM子句的子查詢)|
+ table 輸出的行所引用的表
+ type 聯接類型。下面給出各種聯接類型,按照從最佳類型到最壞類型進行排序:
|類型|說明|
|-|-|
|system|表僅有一行(=系統表)。這是const聯接類型的一個特例。|
|const|表最多有一個匹配行,它將在查詢開始時被讀取。因為僅有一行,在這行的列值可被優化器剩余部分認為是常數。const表很快,因為它們只讀取一次!|
|eq_ref|對于每個來自于前面的表的行組合,從該表中讀取一行。這可能是最好的聯接類型,除了const類型。|
|ref|對于每個來自于前面的表的行組合,所有有匹配索引值的行將從這張表中讀取。|
|ref_or_null|該聯接類型如同ref,但是添加了MySQL可以專門搜索包含NULL值的行。|
|index_merge|該聯接類型表示使用了索引合并優化方法。|
|unique_subquery|該類型替換了下面形式的IN子查詢的ref: value IN (SELECT primary_key FROM single_table WHERE some_expr) unique_subquery是一個索引查找函數,可以完全替換子查詢,效率更高。|
|index_subquery|該聯接類型類似于unique_subquery。可以替換IN子查詢,但只適合下列形式的子查詢中的非唯一索引: value IN (SELECT key_column FROM single_table WHERE some_expr)|
|range|只檢索給定范圍的行,使用一個索引來選擇行。|
|index|該聯接類型與ALL相同,除了只有索引樹被掃描。這通常比ALL快,因為索引文件通常比數據文件小。|
|ALL|對于每個來自于先前的表的行組合,進行完整的表掃描。|
+ possible_keys 指出MySQL能使用哪個索引在該表中找到行
+ key 顯示MySQL實際決定使用的鍵(索引)。如果沒有選擇索引,鍵是NULL。
+ key_len 顯示MySQL決定使用的鍵長度。如果鍵是NULL,則長度為NULL。
+ ref 顯示使用哪個列或常數與key一起從表中選擇行。
+ rows 顯示MySQL認為它執行查詢時必須檢查的行數。多行之間的數據相乘可以估算要處理的行數。
+ filtered 顯示了通過條件過濾出的行數的百分比估計值。
+ Extra 該列包含MySQL解決查詢的詳細信息
## 索引對查詢速度的影響
MySQL中提高性能的最有效的辦法就是添加索引,所以索引對查詢速度的影響有著很重要的影響
```sql
explain [extended] select SQL語句 [\G];
```
查詢結果中主要看rows例的值,該值代表掃描了表中的幾條數據.可以試著使用索引和不使用索引查看變化,越小越快
- 簡介
- 數據庫
- 數據表
- 創建數據表
- 查看數據表結構
- 修改數據表
- 刪除數據表
- 查詢數據
- 表單查詢
- 聚合查詢
- 鏈接查詢
- 子查詢
- 聯合查詢
- 正則查詢
- 數據管理
- 數據類型
- 添加數據
- 更新數據
- 刪除數據
- 索引
- 索引分類
- 設計原則
- 添加索引
- 查看索引
- 刪除索引
- 視圖
- 視圖操作
- 視圖應用
- 事務
- 觸發器
- 存儲過程和函數
- 變量
- 異常處理
- 光標
- 流程控制
- 存儲過程
- 自定義函數
- 內置函數
- 數學
- 字符串
- 日期和時間
- 條件判斷
- 系統信息
- 加/解密
- 其他
- 用戶管理
- 登錄和退出
- 新建用戶
- 刪除用戶
- 修改用戶
- 找回ROOT密碼
- 權限管理
- 備份恢復
- 備份數據
- 恢復數據
- 日志
- 二進制日志
- 錯誤日志
- 查詢日志
- 慢查詢日志
- 性能優化
- 優化查詢語句
- 優化數據庫結構
- 優化服務器
- 主從復制
- WIN系統主從復制
- Linux單機主從復制
- Linux聯機主從復制
- 參數配置
- 日常管理和維護
- 切換主從服務器
- PHP操作
- 連接
- 創建數據庫
- 插入數據
- 插入多條數據
- 預處理語句
- 查詢數據
- 預處理語句
- 實戰應用
- 分表