要使用explain,只需要在查詢的select關鍵字之前增加explain這個詞。
下面是乙個簡單explain的結果:
id列select_type是一位數字,表示執行select語句的順序。
id值相同執行順序從上到下。
id值不同時id值大的先執行。
這一列顯示了對應行是簡單還是複雜select.取值如下:******值意味著查詢不包括子查詢和union。查詢有任何複雜的子部分,則最外層標記為primary.取值如下:輸出資料行所在的表的名稱對於分割槽表,顯示查詢的分割槽id,對於非分割槽表,顯示為null指出mysql能使用哪些索引來優化查詢,查詢所涉及的列上的索引都會被列出,但不一定會被使用key查詢優化器優化查詢實際所使用的索引,如果沒有可用的索引,則顯示為null,如查詢使用了覆蓋索引,則該索引僅出現在key列中key_len表示索引欄位的最大可能長度,key_len的長度由欄位定義計算而來,並非資料的實際長度ref表示哪些列或常量被用於查詢索引列上的值rows表示mysql通過哪些列或常量被用於查詢索引列上的值,rows值的大小是個統計抽樣結果,並不十分準確filtered表示返回結果的行數佔需讀取行數的百分比,filter列的值越大越好無法展示儲存過程,觸發器,udf(自定義函式)對查詢的影響無法使用explain對儲存過程進行分析
早期版本的mysql只支援對select語句進行分析,如果想要分析update,insert語句需要將它們通過某種手段轉換成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表好呢,還是利用索引...