MySQL 中的 explain 命令可以幫助開發者對查詢語句的執行優化進行診斷。
EXPLAIN SELECT * FROM users WHERE age >18;
執行完上述語句后,可以得到如下的結果:
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | users | ALL | NULL | NULL | NULL | NULL | 1 | Using where | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+
Explain 的輸出結果中,包含了以下內容:
id
:表示 SELECT 查詢在查詢中的編號select_type
:表示 SELECT 查詢的類型table
:表示查詢的表名type
:表示查詢時使用的索引類型possible_keys
:表示查詢時可能使用的索引key
:表示實際選擇使用的索引key_len
:表示使用的索引的長度ref
:表示使用索引的關聯列rows
:表示查詢返回的行數Extra
:包含查詢的一些補充信息
通過 analyze table 命令可以分析表,獲得表的統計信息。
ANALYZE TABLE users;
執行 analyze table 命令可以使得 MySQL 在分析查詢語句的時候更加準確,進而幫助開發者優化查詢性能。