亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

mysql之explain使用詳解(分析索引)

2024-07-24 13:15:21
字體:
來源:轉載
供稿:網友

explain顯示了mysql如何使用索引來處理select語句以及連接表??梢詭椭x擇更好的索引和寫出更優化的查詢語句。

使用方法,在select語句前加上explain就可以了,如:

explain select * from statuses_status where id=11;

mysql,explain

explain列的解釋

table:顯示這一行的數據是關于哪張表的

type:這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為const、eq_reg、ref、range、indexhe和all

possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從where語句中選擇一個合適的語句

key: 實際使用的索引。如果為null,則沒有使用索引。很少的情況下,mysql會選擇優化不足的索引。這種情況下,可以在select語句中使用use index(indexname)來強制使用一個索引或者用ignore index(indexname)來強制mysql忽略索引

key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好

ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數

rows:mysql認為必須檢查的用來返回請求數據的行數

extra:關于mysql如何解析查詢的額外信息。將在表4.3中討論,但這里可以看到的壞的例子是using temporary和using filesort,意思mysql根本不能使用索引,結果是檢索會很慢

extra列返回的描述的意義

distinct:一旦mysql找到了與行相聯合匹配的行,就不再搜索了

not exists: mysql優化了left join,一旦它找到了匹配left join標準的行,就不再搜索了

range checked for each record(index map:#):沒有找到理想的索引,因此對于從前面表中來的每一個行組合,mysql檢查使用哪個索引,并用它來從表中返回行。這是使用索引的最慢的連接之一

using filesort: 看到這個的時候,查詢就需要優化了。mysql需要進行額外的步驟來發現如何對返回的行排序。它根據連接類型以及存儲排序鍵值和匹配條件的全部行的行指針來排序全部行

using index: 列數據是從僅僅使用了索引中的信息而沒有讀取實際的行動的表返回的,這發生在對表的全部的請求列都是同一個索引的部分的時候

using temporary 看到這個的時候,查詢需要優化了。這里,mysql需要創建一個臨時表來存儲結果,這通常發生在對不同的列集進行order by上,而不是group by上

where used 使用了where從句來限制哪些行將與下一張表匹配或者是返回給用戶。如果不想返回表中的全部行,并且連接類型all或index,這就會發生,或者是查詢有問題不同連接類型的解釋(按照效率高低的順序排序)

system 表只有一行:system表。這是const連接類型的特殊情況

const:表中的一個記錄的最大值能夠匹配這個查詢(索引可以是主鍵或惟一索引)。因為只有一行,這個值實際就是常數,因為mysql先讀這個值然后把它當做常數來對待

eq_ref:在連接中,mysql在查詢時,從前面的表中,對每一個記錄的聯合都從表中讀取一個記錄,它在查詢使用了索引為主鍵或惟一鍵的全部時使用

ref:這個連接類型只有在查詢使用了不是惟一或主鍵的鍵或者是這些類型的部分(比如,利用最左邊前綴)時發生。對于之前的表的每一個行聯合,全部記錄都將從表中讀出。這個類型嚴重依賴于根據索引匹配的記錄多少—越少越好

range:這個連接類型使用索引返回一個范圍中的行,比如使用>或<查找東西時發生的情況

index: 這個連接類型對前面的表中的每一個記錄聯合進行完全掃描(比all更好,因為索引一般小于表數據)

all:這個連接類型對于前面的每一個記錄聯合進行完全掃描,這一般比較糟糕,應該盡量避免

分析索引分析

在這里對explain的各個字段進行詳細的分析,來幫助大家分析自己所寫的sql是否最佳的使用了索引。

mysql,explain

首先是select_type:將select查詢分為簡單(simple)和復雜兩種類型

復雜類型又分為子查詢(subquery)和from列表中包含子查詢(drived)

simple:

mysql,explain

drived:

mysql,explain

就type進行詳細的介紹:

System,const,eq_ref,ref,range,index,all
all : 即全表掃描
index : 按索引次序掃描,先讀索引,再讀實際的行,結果還是全表掃描,主要優點是避免了排序。因為索引是排好的。
range:以范圍的形式掃描。

explain select * from a where a_id > 1/G

ref:非唯一索引訪問(只有普通索引)

create table a(a_id int not null, key(a_id));insert into a values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);mysql> explain select * from a where a_id=1/G

eq_ref:使用唯一索引查找(主鍵或唯一索引)
const:常量查詢

在整個查詢過程中這個表最多只會有一條匹配的行,比如主鍵 id=1 就肯定只有一行,只需讀取一次表數據便能取得所需的結果,且表數據在分解執行計劃時讀取。

mysql,explain

當結果不是一條時,就會變成index或range等其他類型

system:系統查詢

null:優化過程中就已經得到結果,不在訪問表或索引

possible_keys:可能用到的索引

key:實際用到的索引

key_line:索引字段最大可能使用長度

ref:

指出對 key 列所選擇的索引的查找方式,常見的值有 const, func, NULL, 具體字段名。當 key 列為 NULL ,即不使用索引時,此值也相應的為 NULL 。

rows:估計需要掃描的行數

Extra:顯示以上信息之外的其他信息

Using index

此查詢使用了覆蓋索引(Covering Index),即通過索引就能返回結果,無需訪問表。

若沒顯示"Using index"表示讀取了表數據。

Using where

表示 MySQL 服務器從存儲引擎收到行后再進行“后過濾”(Post-filter)。所謂“后過濾”,就是先讀取整行數據,再檢查此行是否符合 where 句的條件,符合就留下,不符合便丟棄。因為檢查是在讀取行后才進行的,所以稱為“后過濾”。

Using temporary

使用到臨時表

建表及插入數據:

create table a(a_id int, b_id int);insert into a values(1,1),(1,1),(2,1),(2,2),(3,1);mysql> explain select distinct a_id from a/G

Extra: Using temporary

MySQL 使用臨時表來實現 distinct 操作。

Using filesort

若查詢所需的排序與使用的索引的排序一致,因為索引是已排序的,因此按索引的順序讀取結果返回,否則,在取得結果后,還需要按查詢所需的順序對結果進行排序,這時就會出現 Using filesort 。

select * from a order by id;

對于沒有索引的列進行order by 就會出現filesort


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91久久在线视频| 成人激情在线观看| 一区二区在线视频播放| 日韩一区二区精品视频| 久久国产精品久久国产精品| 亚洲色图校园春色| 欧美激情一区二区三区久久久| 亚洲第一区第二区| 亚洲无亚洲人成网站77777| 欧美中文字幕第一页| 热久久视久久精品18亚洲精品| xvideos国产精品| 国产成人高清激情视频在线观看| 久久夜色撩人精品| 欧美激情视频给我| 国产精品久久久久免费a∨大胸| 欧美日韩免费网站| 另类专区欧美制服同性| 国产成人在线一区二区| 18性欧美xxxⅹ性满足| 亚洲福利视频在线| 日韩在线视频线视频免费网站| 日本精品免费观看| 国产综合福利在线| 亚洲欧美中文日韩在线v日本| 狠狠久久五月精品中文字幕| 久久香蕉精品香蕉| 亚洲精品小视频在线观看| 日韩一区二区精品视频| 成人午夜小视频| 欧美日韩国产综合视频在线观看中文| 日韩av免费一区| 国产精品丝袜久久久久久高清| 欧美成人在线免费视频| 第一福利永久视频精品| 国产乱肥老妇国产一区二| 久久天天躁狠狠躁夜夜躁2014| 久久99国产综合精品女同| 亚洲色图欧美制服丝袜另类第一页| 国产精品av电影| 久久久久亚洲精品国产| 国产成人一区二区三区| 91网站在线看| 欧美人与性动交| 日韩天堂在线视频| 亚洲а∨天堂久久精品9966| www.亚洲成人| 丝袜亚洲欧美日韩综合| 欧美性受xxxx黑人猛交| 美女黄色丝袜一区| 69国产精品成人在线播放| 91美女福利视频高清| 欧美激情女人20p| 精品成人69xx.xyz| 欧美激情在线观看视频| 国语对白做受69| 久久久中文字幕| 在线看片第一页欧美| 亚洲一区二区福利| 亚洲摸下面视频| 欧美在线一级va免费观看| 亚洲精品视频在线观看视频| 国产精品久久91| 亚洲人成网站在线播| 欧美日韩裸体免费视频| 亚洲网站在线观看| 俺去亚洲欧洲欧美日韩| 亚洲国模精品一区| 国产精品99导航| 国产小视频91| 久久久久久久久中文字幕| 91久久夜色精品国产网站| 有码中文亚洲精品| 欧美丰满少妇xxxxx做受| 亚洲小视频在线观看| 国内精品久久久久影院优| 成人激情综合网| 久久国产精品久久国产精品| 欧美精品在线播放| 日韩欧美精品中文字幕| 亚洲精品国产精品国自产观看浪潮| 久久久久久久久中文字幕| 亚洲尤物视频网| 日韩少妇与小伙激情| 日韩精品在线视频美女| 国产精品视频自在线| 96sao精品视频在线观看| 欧美有码在线观看视频| 92裸体在线视频网站| 日韩精品免费在线视频| 久久天天躁夜夜躁狠狠躁2022| 国产精品r级在线| 91精品国产综合久久久久久久久| 日韩视频在线免费| 精品国产91久久久久久老师| 91精品在线国产| 亚洲一区二区三区四区在线播放| 日韩在线观看网站| 亚洲一区亚洲二区亚洲三区| 亚洲国模精品私拍| 91精品国产色综合久久不卡98| 国产亚洲欧洲在线| 91亚洲国产精品| 国产精品人成电影在线观看| 日韩视频免费在线| 亚洲美女激情视频| 欧美xxxx14xxxxx性爽| 国产日韩av高清| 九九久久精品一区| 青青久久aⅴ北条麻妃| 欧美成人午夜视频| 久久中文久久字幕| 97av在线播放| 国产一区二区av| 国内成人精品视频| 热99精品里视频精品| 国模精品一区二区三区色天香| 美女精品视频一区| 国产午夜精品免费一区二区三区| 91精品国产乱码久久久久久久久| 欧美性xxxx| 久久精品99久久久香蕉| 色综合五月天导航| 日韩电影中文字幕av| 色综合久久精品亚洲国产| 国产日韩在线观看av| 亚洲码在线观看| 色七七影院综合| 日韩在线高清视频| 成人免费观看49www在线观看| 国产一区玩具在线观看| 日韩在线观看视频免费| 成人午夜激情免费视频| 黄网站色欧美视频| 久久精品国产2020观看福利| 亚洲欧美日韩国产中文专区| 亚洲免费电影一区| 日本亚洲欧洲色α| 欧美老女人性生活| 亚洲无限av看| 亚洲电影中文字幕| 成人av.网址在线网站| 国产在线视频2019最新视频| 国产专区欧美专区| 日韩免费在线免费观看| 亚洲视频一区二区| 国产精品一二区| 亚洲女人天堂成人av在线| 夜夜嗨av色综合久久久综合网| 国产一区二区丝袜高跟鞋图片| 久久精品一偷一偷国产| 久久99视频免费| 亚洲精品福利在线观看| 国产精品露脸自拍| 一区二区福利视频| 一区二区福利视频| 91国内免费在线视频| 亚洲欧美精品suv| 国产在线精品成人一区二区三区| 久久视频在线播放| 欧美日韩国产精品| 懂色av影视一区二区三区| 亚洲电影av在线| 欧美一级电影久久|