了解MySQL執行計劃結果

本文主要給大家介紹了解MySQL執行計劃結果,其所涉及的東西,從理論知識來獲悉,有很多書籍、文獻可供大家參考,從現實意義角度出發,創新互聯累計多年的實踐經驗可分享給大家。

專注于為中小企業提供網站制作、成都網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業普寧免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了1000+企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。

explain結果說明

了解MySQL執行計劃結果

  • select_type
類型說明
SIMPLE簡單SELECT(不使用UNION或子查詢等)
PRIMARY主查詢,即最外面的SELECT
UNIONUNION中的第二個或后面的SELECT語句
DEPENDENT UNIONNION中的第二個或后面的SELECT語句,取決于外面的查詢
UNION RESULTUNION的結果
SUBQUERY子查詢中的第一個SELECT
DEPENDENT SUBQUERY子查詢中的第一個SELECT,取決于外面的查詢
SUBQUERY導出表的SELECT(FROM子句的子查詢)
  • table
    輸出結果集的表名

  • partitions
    存在分區時,使用到哪些分區

  • type
    連接使用了哪種類別,有無使用索引,是使用Explain命令分析性能瓶頸的關鍵項之一。常見訪問類型如下,按照性能排序,從上到下,從差到好。一般來說,得保證查詢至少達到range級別,最好能達到ref,否則就可能會出現性能問題。
類型示例說明
ALL全表掃描一般是沒有where條件或者where條件沒有使用索引的查詢語句
index索引全掃描一般是查詢的字段都有索引的查詢語句
range索引范圍掃描常用于<、<=、>、>=、between等操作
ref非唯一索引掃描使用非唯一索引或唯一索引的前綴掃描,返回匹配某個單獨值的記錄行
eq_ref唯一索引掃描類似ref,區別在于使用的索引是唯一索引,對于每個索引鍵值,表中只有一條記錄匹配
const,system單表最多有一個匹配行onst/system出現在根據主鍵primary key或者 唯一索引 unique index 進行的查詢
NULL不用掃描表或索引select 1 from dual
  • possible_keys
    列指出MySQL能使用哪個索引在該表中找到行

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

  • key_len
    顯示MySQL決定使用的鍵長度。如果鍵是NULL,則長度為NULL。使用的索引的長度。在不損失精確性的情況下,長度越短越好

  • ref
    顯示使用哪個列或常數與key一起從表中選擇行。

  • rows
    顯示MySQL認為它執行查詢時必須檢查的行數。

  • filtered
    存儲引擎返回的數據在server層過濾后,剩下多少滿足查詢的記錄數量的比例(百分比)

  • extra
    包含MySQL解決查詢的詳細信息,也是關鍵參考項之一。
extra元素說明
Distinct一旦MYSQL找到了與行相聯合匹配的行,就不再搜索了
Not existsMYSQL 優化了LEFT JOIN,一旦它找到了匹配LEFT JOIN標準的行,就不再搜索了
Rangechecked for each
Record沒有找到理想的索引,因此對于從前面表中來的每一 個行組合,MYSQL檢查使用哪個索引,并用它來從表中返回行。這是使用索引的最慢的連接之一
Using filesort表示MySQL需額外排序操作, 不能通過索引順序達到排序效果
Using index表示索引覆蓋,不會回表查詢
Using temporary通常發生在對不同的列集進行ORDER BY上,而不是GROUP BY上
Using where表示進行了回表查詢

什么是回表

簡單來說就是數據庫根據索引找到了指定的記錄所在行后,還需要根據rowid再次到數據塊里取數據的操作。比如這樣的執行計劃,先索引掃描,再通過rowid去取索引中未能提供的數據,即為回表。“回表”一般就是指執行計劃里顯示的“TABLE ACCESS BY INDEX ROWID”。再例如,雖然只查詢索引里的列,但是需要回表過濾掉其他行。

怎么避免回表?
將需要的字段放在索引中去。查詢的時候就能避免回表。但是不要刻意去避免回表,那樣代價太了。也不是將所有的字段都放在所有中。

回表和MySQL的索引實現有關系,有興趣的朋友可以進一步了解B+樹相關原理,參照下面這篇文章“從B樹、B+樹、B*樹談到R 樹”。

MySQL如何獲取rownum

不同于oracle的rownum,mysql不太直接提供這樣的字段,但是可以用變量的方法添加偽自增序列,語法格式為
SELECT @rownum:=@rownum+1 AS rownum, table_name.* FROM (SELECT @rownum:=0) r, table_name ;

看了以上了解MySQL執行計劃結果介紹,希望能給大家在實際運用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補充的地方,大家可以繼續關注創新互聯行業資訊板塊,會定期給大家更新行業新聞和知識,如有需要更加專業的解答,可在官網聯系我們的24小時售前售后,隨時幫您解答問題的。

新聞名稱:了解MySQL執行計劃結果
文章URL:http://m.kartarina.com/article36/phoopg.html

成都網站建設公司_創新互聯,為您提供用戶體驗定制網站全網營銷推廣網站策劃網站導航關鍵詞優化

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設
主站蜘蛛池模板: 亚洲AV蜜桃永久无码精品| 亚洲国产精品无码久久一线| 少妇人妻无码精品视频app| 久久综合一区二区无码| 熟妇人妻中文a∨无码| 无码国产精品一区二区免费模式| 亚洲av无码专区在线| 中文无码AV一区二区三区| 亚洲av永久无码一区二区三区| JLZZJLZZ亚洲乱熟无码| 欧洲无码一区二区三区在线观看| 日韩放荡少妇无码视频| 亚洲成av人片在线观看无码不卡| 色欲aⅴ亚洲情无码AV蜜桃| 国产白丝无码免费视频| 亚洲精品无码AV中文字幕电影网站| 少妇无码一区二区二三区| 日韩综合无码一区二区| 亚洲人成网亚洲欧洲无码| 无码国内精品久久人妻| 中文字幕无码乱人伦| 免费人妻无码不卡中文字幕18禁| 久久精品国产亚洲AV无码偷窥| 久久久精品人妻无码专区不卡 | 精品国产V无码大片在线看| 国产av无码专区亚洲国产精品| 亚洲精品久久无码| 亚洲天堂2017无码中文| 久久久久久久人妻无码中文字幕爆 | 亚洲av无码不卡一区二区三区 | 精品人妻无码一区二区色欲产成人| 国模GOGO无码人体啪啪| 性无码专区一色吊丝中文字幕| 国产乱人伦中文无无码视频试看| 亚洲国产成人精品无码区在线秒播| 免费无码H肉动漫在线观看麻豆| 国产99久久九九精品无码| 亚洲伊人成无码综合网| 少妇无码AV无码一区| 本免费AV无码专区一区| 国精品无码一区二区三区在线|