日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql const ref_mysql explain详解

發布時間:2024/8/5 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql const ref_mysql explain详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不得不了解一些explain的用法。

首先看看輸出地參數:

這些參數中,我們常常需要關心的是這幾個參數

1,select_type,就是select類型.主要有這幾種,

SIMPLE:這個是簡單的sql查詢,不使用UNION或者子查詢

PRIMARY:子查詢中最外層的select

UNION:UNION中的第二個或后面的SELECT語句

DEPENDENT UNION:UNION中的第二個或后面的SELECT語句,取決于外面的查詢

UNION RESULT:UNION的結果。

SUBQUERY:子查詢中的第一個SELECT.

DEPENDENT SUBQUERY:子查詢中的第一個SELECT,取決于外面的查詢

DERIVED:派生表的SELECT(FROM子句的子查詢)

2,table 輸出行所引用的表

3,type 結類型。各種類型的信息在下面給出。

system

表僅有一行(=系統表)。這是const聯結類型的一個特例。

const

表有最多一個匹配行,它將在查詢開始時被讀取。因為僅有一行,在這行的列值可被剩下的優化器認為是常數。

const表很快,因為它們只讀取一次!

eq_ref

對于每個來自于先前的表的行組合,從該表中讀取一行。這可能是最好的聯結類型,除了const類型。它用在一個索引的所有部分被聯結使用并且索引是UNIQUE或PRIMARY

KEY。

ref

對于每個來自于先前的表的行組合,所有有匹配索引值的行將從這張表中讀取。

如果聯結只使用鍵的最左面前綴,不或如果鍵不是UNIQUE或PRIMARY

KEY(換句話說,如果聯結能基于鍵值選擇單個行的話),使用ref。如果被使用的鍵僅僅匹配一些行,該聯結類型是不錯的。

range

只有在一個給定范圍的行將被檢索,使用一個索引選擇行。ref列顯示哪個索引被使用。

index

這與ALL相同,除了只有索引樹被掃描。這通常比ALL快,因為索引文件通常比數據文件小。

ALL

對于每個來自于先前的表的行組合,將要做一個完整的表掃描。

如果表格是第一個沒標記const的表,這通常不好,并且通常在所有的其他情況下很差。你通常可以通過增加更多的索引來避免ALL,使得行能從早先的表中基于常數值或列值被檢索出。

從上面可以發現,從上至下依次是越來越壞的結果,當然最好的還是Null,沒有查詢本表。

4,possible_keys:possible_keys列指出MySQL能使用哪個索引在該表中找到行5,key:key列顯示MySQL實際決定使用的鍵。如果沒有索引被選擇,鍵是NULL。6,key_len key_len列顯示MySQL決定使用的鍵長度。如果鍵是NULL,長度是NULL。注意這告訴我們MySQL將實際使用一個多部鍵值的幾個部分。7 ref:ref列顯示哪個列或常數與key一起用于從表中選擇行。8,rows rows列顯示MySQL相信它必須檢驗以執行查詢的行數。9,Extra如果是Only index,這意味著信息只用索引樹中的信息檢索出的。通常,這比掃描整個表要快。

如果是where used,它意味著一個WHERE子句將被用來限制哪些行與下一個表匹配或發向客戶。

如果是impossible where 表示用不著where

如果是Using filesort表示用到了文件排序,通常在數據量大的情況下,要減少這種查詢

-------------------------------------------------------------------------------------------

type

聯合查詢所使用的類型。

type顯示的是訪問類型,是較為重要的一個指標,結果值從好到壞依次是:

system > const > eq_ref

> ref > fulltext >

ref_or_null > index_merge >

unique_subquery > index_subquery >

range > index > ALL

一般來說,得保證查詢至少達到range級別,最好能達到ref。

possible_keys

指出MySQL能使用哪個索引在該表中找到行。如果是空的,沒有相關的索引。這時要提高性能,可通過檢驗WHERE子句,看是否引用某些字段,或者檢查字段不是適合索引。

key

顯示MySQL實際決定使用的鍵。如果沒有索引被選擇,鍵是NULL。

key_len

顯示MySQL決定使用的鍵長度。如果鍵是NULL,長度就是NULL。文檔提示特別注意這個值可以得出一個多重主鍵里mysql實際使用了哪一部分。

ref

顯示哪個字段或常數與key一起被使用。

rows

這個數表示mysql要遍歷多少數據才能找到,在innodb上是不準確的。

Extra

如果是Only index,這意味著信息只用索引樹中的信息檢索出的,這比掃描整個表要快。

如果是where used,就是使用上了where限制。

如果是impossible where 表示用不著where,一般就是沒查出來啥。

如果此信息顯示Using filesort或者Using temporary的話會很吃力,WHERE和ORDER

BY的索引經常無法兼顧,如果按照WHERE來確定索引,那么在ORDER BY時,就必然會引起Using

filesort,這就要看是先過濾再排序劃算,還是先排序再過濾劃算。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的mysql const ref_mysql explain详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。