二.執行計畫包含的資訊(接上篇)
5.key
顯示mysql在查詢中實際使用的索引,若沒有使用索引,顯示為null
tips:查詢中若使用了覆蓋索引,則該索引僅出現在key列表中
表示索引中使用的位元組數,可通過該列計算查詢中使用的索引的長度
tips:key_len顯示的值為索引欄位的最大可能長度,並非實際使用長度,即key_len是根據表定義計算而得,不是通過表內檢索出的。
7.ref
表示上述表的連線匹配條件,即哪些列或常量被用於查詢索引列上的值。
本例中,由key_len可知t1表的idx_col1_col2被充分使用,col1匹配t2表的col1,col2匹配了乙個常量,即 』ac』。
8.rows
表示mysql根據表統計資訊及索引選用情況,估算的找到所需的記錄所需要讀取的行數。
包含不適合在其他列中顯示但十分重要的額外資訊
a.using index
該值表示相應的select操作中使用了覆蓋索引(covering index)
tips:覆蓋索引(covering index)
mysql可以利用索引返回select列表中的字段,而不必根據索引再次讀取資料檔案
包含所有滿足查詢需要的資料的索引稱為 覆蓋索引(covering index)
注意:如果要使用覆蓋索引,一定要注意select列表中只取出需要的列,不可select *,因為如果將所有字段一起做索引會導致索引檔案過大,查詢效能下降。
b.using where
表示mysql伺服器在儲存引擎受到記錄後進行「後過濾」(post-filter),如果查詢未能使用索引,using where的作用只是提醒我們mysql將用where子句來過濾結果集。
表示mysql需要使用臨時表來儲存結果集,常見於排序和分組查詢。
mysql中無法利用索引完成的排序操作稱為「檔案排序」。
三.mysql執行計畫的侷限
1.explain不會告訴你關於觸發器、儲存過程的資訊或使用者自定義函式對查詢的影響情況
2.explain不考慮各種cache
3.explain不能顯示mysql在執行查詢時所作的優化工作
4.部分統計資訊是估算的,並非精確值
5.expalin只能解釋select操作,其他操作要重寫為select後檢視執行計畫。
mysql執行計畫 MySQL 執行計畫
1.執行計畫的定義 什麼是執行計畫 查詢計畫 呢?執行計畫就是一系列的操作步驟。sql是宣告性語言,它只告訴資料庫要查詢什麼,但並不告訴資料庫如何去查。資料庫所要做的就是基於演算法和統計資訊計算出一條最佳的訪問路徑。這個工作是由優化器來完成的。優化器會比較不同的執行計畫,然後選擇其中最優的一套。2....
mysql 生成執行計畫 MySQL執行計畫
和很多其他關係型資料庫不通,mysql並不會在生成查詢位元組碼來執行查詢。mysql生成查詢的一棵指令樹,然後通過儲存引擎執行完成這棵指令樹並返回結果。最終的執行計畫包含了重構查詢的全部資訊。如果某個查詢執行explain extended 之後,在執行show warnings,就可以看到重構出的...
mysql 查詢執行計畫 MySql執行計畫的檢視
一。什麼是資料庫執行計畫 利用乙個sql語句,你可能要server取出所有news表中的資訊.當server收到的這條sql的時候,第一件事情並不是解析它.如果這條sql沒有語法錯誤,server才會繼續工作.server會決定最好的計算方式.server會選擇,是讀整個news表好呢,還是利用索引...