MySQL中的explain語句是用來分析查詢語句的。它可以返回優化器分析查詢語句后的執行計劃,幫助我們更好地了解查詢語句的執行過程,找到性能瓶頸。使用explain語句需要搭配查詢語句使用。
EXPLAIN SELECT * FROM user WHERE name = '張三';
上面的語句將查詢名字為張三的用戶信息。下面是explain語句的結果:
id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE user NULL ref name_idx name 102 const 1 100.00 Using index
結果中每一列的含義如下:
- id:每一表在執行計劃中的編號,這個編號是按照查詢中表的順序從1開始遞增的。
- select_type:查詢類型,由優化器決定。常見的有SIMPLE、PRIMARY、SUBQUERY、DERIVED等。
- table:表名。
- partitions:匹配的分區或分區段(不常用)。
- type:訪問類型。常見的有ALL、index和range等。
- possible_keys:可用的索引類型。
- key:實際使用的索引。
- key_len:索引字段的長度。
- ref:顯示key列的哪一列或常數與表進行匹配。
- rows:預估結果集的行數。
- filtered:通過過濾器過濾后的結果行數占預估行數的百分比。
- Extra:其他的一些額外信息,比如使用到的臨時表、排序方式、分組方式等。
通過explain語句的結果,我們可以看到查詢語句中間的執行過程,判斷查詢語句是否經過了優化,哪些地方可以進行性能優化等。