MySQL中的explain語句是用來分析查詢語句的。它可以返回優(yōu)化器分析查詢語句后的執(zhí)行計劃,幫助我們更好地了解查詢語句的執(zhí)行過程,找到性能瓶頸。使用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:每一表在執(zhí)行計劃中的編號,這個編號是按照查詢中表的順序從1開始遞增的。
- select_type:查詢類型,由優(yōu)化器決定。常見的有SIMPLE、PRIMARY、SUBQUERY、DERIVED等。
- table:表名。
- partitions:匹配的分區(qū)或分區(qū)段(不常用)。
- type:訪問類型。常見的有ALL、index和range等。
- possible_keys:可用的索引類型。
- key:實際使用的索引。
- key_len:索引字段的長度。
- ref:顯示key列的哪一列或常數(shù)與表進行匹配。
- rows:預估結果集的行數(shù)。
- filtered:通過過濾器過濾后的結果行數(shù)占預估行數(shù)的百分比。
- Extra:其他的一些額外信息,比如使用到的臨時表、排序方式、分組方式等。
通過explain語句的結果,我們可以看到查詢語句中間的執(zhí)行過程,判斷查詢語句是否經過了優(yōu)化,哪些地方可以進行性能優(yōu)化等。