## **Mysql關于Sql語句分析是否走索引問題討論**
## <blockquote class="danger"><p>答案: 使用EXPLAIN + SQL語句,分析查詢結果集
如圖所示

我們把比較重要的參數提取出來進行詳細講解一下:
* [ ] ??? **id**
選擇標識符
* [ ] ??? **select_type**
查詢中每個select子句的類型
1. SIMPLE:簡單select語句,不實用union或子查詢等
2. PRIMARY:查詢中若包含任何復雜的子部分,最外層的select被標記為PRIMARY
3. UNION:UNION中的第二個或后面的SELECT語句
4. UNION RESULT:UNION的結果
5. SUBQUERY:子查詢中的第一個SELECT
* [ ] ??? **table**
查詢的表名
* [ ] ??? **partitions**
匹配的分區
* [ ] ??? **type**
表示連接類型,類型有ALL、index、range、 ref、eq_ref、const、system、NULL,這幾種類型從左到右,性能越來越高。一般一個好的sql語句至少要達到range級別。all級別應當杜絕
* [ ] **possible_keys**
表示查詢時,可能使用的索引
* [ ] **key**
顯示MySQL實際決定使用的鍵(索引)。如果沒有選擇索引,鍵是NULL
* [ ] **key_len**
顯示的值為索引字段的最大可能長度,并非實際使用長度
* [ ] **ref**
連接匹配條件,即哪些列或常量被用于查找索引列上的值
* [ ] **rows**
顯示MySQL認為它執行查詢時必須檢查的行數。
* [ ] **filtered**
按表條件過濾的行百分比
* [ ] **extra**
表示詳細說明,注意該值包含十分重要的信息。一般該列存在下列值,常見的不太友好的值有:Using filesort(排序時無法使用到索引), Using temporary(表示使用了臨時表存儲中間結果)