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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql explain中的type列含义和extra列的含义

發布時間:2024/9/16 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql explain中的type列含义和extra列的含义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多朋友在用mysql進行調優的時候都肯定會用到explain來看select語句的執行情況,這里簡單介紹結果中兩個列的含義。

1 type列

官方的說法,說這列表示的是“訪問類型”,更通俗一點就是:mysql找到需要的數據行的方式。一下就是從效率最差到最好順序分別介紹下:

All 這個就是所謂的全表掃描,沒有用到任何的index,mysql就是從頭到尾把整個表遍歷一邊,找到所需要的數據行。效率是最差的。如下圖,這個表中的usertype不是索引,這個查詢中沒有用到任何索引,所以就出現了全表掃描的結果。


?

index type列中出現了index,含義僅僅是局限在掃描全表的順序是按照索引順序掃描的,僅僅是按索引順序去掃描的。它的有點是避免了排序,因為索引就是已經排序好的,缺點就是要承擔按照索引次序讀取整張表的開銷。如下,這個查詢中order by id,id是這個表的索引,但是因為沒有在where中出現任何的索引列,所以它也只是索引順去掃描了全表。(這里強調一下,你的查詢語句中where條件中沒有索引,只是order by 的時候用了index,而且沒有用limit限制,type這里顯示的是all,也就是這種情況下沒有limit,還是掃面全表的)


?

range 這個一般就是在你的where語句中出現了between或者“>”這種符號的時候會出現這個。這種范圍掃描索引掃描比全表掃描要好,因為它只需要開始于索引的某一點,而結束語另一點,不用掃描全部索引。

ref 這也是一種索引訪問,它返回所有匹配某個單獨值的行,然而,它可能會找到多個符合條件的行,所以他應該屬于查找和掃描的混合體。

const,system 當mysql能對查詢的部分就行優化,并且轉換成一個常量的時候,它就會使用這種訪問類型了。比如你把一行的主鍵當做where條件放進去,那mysql就可以把它轉換成一個常量,然后查詢。如下圖:uid是主鍵,作為where條件就能出現這個效率最高的查詢結果。


?

2 extra列

extra列中出現的信息一般不是太重要,但是還是有很多信息我們可以從這里面獲取到:

using index:出現這個說明mysql使用了覆蓋索引,避免訪問了表的數據行,效率不錯!

using where:這說明服務器在存儲引擎收到行后將進行過濾。有些where中的條件會有屬于索引的列,當它讀取使用索引的時候,就會被過濾,所以會出現有些where語句并沒有在extra列中出現using where這么一個說明。

using temporary:這意味著mysql對查詢結果進行排序的時候使用了一張臨時表。

using filesort:這個說明mysql會對數據使用一個外部的索引排序,而不是按照表內的索引順序進行讀取。

?

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

總結

以上是生活随笔為你收集整理的mysql explain中的type列含义和extra列的含义的全部內容,希望文章能夠幫你解決所遇到的問題。

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