MySQL的 explain 命令語(yǔ)句提供了如何執(zhí)行 SQL 語(yǔ)句的信息,解析 SQL 語(yǔ)句的執(zhí)行計(jì)劃并展示,explain 支持 select、delete、insert、replace 和 update 等語(yǔ)句,也支持對(duì)分區(qū)表的解析。
通常 explain 用來(lái)獲取 select 語(yǔ)句的執(zhí)行計(jì)劃,通過(guò) explain 展示的信息我們可以了解到表查詢(xún)的順序,表連接的方式等,并根據(jù)這些信息判斷 select 執(zhí)行效率,決定是否添加索引或改寫(xiě) SQL 語(yǔ)句優(yōu)化表連接方式以提高執(zhí)行效率。本文參考官方文檔:EXPLAIN Output Format 對(duì) explain 輸出的內(nèi)容進(jìn)行說(shuō)明,同時(shí)也對(duì)自己之前使用 explain 不清晰的方面進(jìn)行總結(jié)。
本文使用的 MySQL 版本為官方社區(qū)版 5.7.24。
@localhost:(none)> select version();+------------+| version() |+------------+| 5.7.24-log |+------------+1 row in setTime: 0.066s