mysql 查询执行计划_mysql8 参考手册--了解查询执行计划,使用EXPLAIN优化查询
根據表,列,索引的詳細信息以及WHERE子句中的條件,MySQL優化器考慮了許多技術來有效執行SQL查詢中涉及的查找。無需讀取所有行即可執行對巨大表的查詢;可以執行涉及多個表的聯接,而無需比較行的每個組合。優化器選擇執行最有效查詢的一組操作稱為“ 查詢執行計劃 ”,也稱為 EXPLAIN計劃。您的目標是認識到 EXPLAIN 表示查詢優化的計劃,如果發現一些低效的操作,則可以學習SQL語法和索引技術來改進計劃。
使用EXPLAIN優化查詢
EXPLAIN語句提供有關MySQL如何執行語句的信息:
1、EXPLAIN作品有 SELECT, DELETE, INSERT, REPLACE,和 UPDATE語句。
2、當EXPLAIN與可解釋的語句一起使用時,MySQL將顯示來自優化器的有關語句執行計劃的信息。也就是說,MySQL解釋了它將如何處理該語句,包括有關如何連接表以及以何種順序連接表的信息。有關 EXPLAIN用于獲取執行計劃信息的信息,請參見第8.8.2節“ EXPLAIN輸出格式”。
3、當EXPLAIN與 而不是可解釋的語句一起使用時,它將顯示在命名連接中執行的語句的執行計劃。請參見第8.8.4節“獲取命名連接的執行計劃信息”。 FOR CONNECTION connection_id
4、對于SELECT語句, EXPLAIN產生可以使用來顯示的其他執行計劃信息 SHOW WARNINGS。請參見 第8.8.3節“擴展的EXPLAIN輸出格式”。
5、EXPLAIN對于檢查涉及分區表的查詢很有用。請參見 第23.3.5節“獲取有關分區的信息”。
6、FORMAT選項可用于選擇輸出格式。TRADITIONAL以表格格式顯示輸出。如果不FORMAT存在任何選項,則為默認設置 。 JSONformat以JSON格式顯示信息。
在EXPLAIN的幫助下,您可以看到應該在表中添加索引的位置,以便通過使用索引查找行來使語句更快地執行。您還可以 EXPLAIN用來檢查優化器是否以最佳順序聯接表。要提示優化器使用連接順序,該連接順序與SELECT語句中表的命名順序相對應,請以 SELECT STRAIGHT_JOIN而不是just 開頭SELECT。(請參見 第13.2.10節“ SELECT語句”。)但是,STRAIGHT_JOIN由于它禁用了半聯接轉換,因此 可能會阻止使用索引。看到 第8.2.2.1節“使用半聯接轉換優化IN和EXISTS子查詢謂詞”。
優化程序跟蹤有時可能提供與補充的信息EXPLAIN。但是,優化程序的跟蹤格式和內容在版本之間可能會發生變化。有關詳細信息,請參見 MySQL內部:跟蹤優化器。
如果您在認為應該使用索引時遇到問題,請運行ANALYZE TABLE以更新表統計信息,例如鍵的基數,這可能會影響優化器的選擇。請參見 第13.7.3.1節“ ANALYZE TABLE語句”。
注意
EXPLAIN還可用于獲取有關表中列的信息。EXPLAIN tbl_name與DESCRIBE tbl_name同義,并顯示來自tbl_name的列。
總結
以上是生活随笔為你收集整理的mysql 查询执行计划_mysql8 参考手册--了解查询执行计划,使用EXPLAIN优化查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql slave 能写吗_MySQ
- 下一篇: mysql 索引语法_MySQL 索引: