詳解MySQL中EXPLAIN解釋命令

轉載鏈接:http://database.51cto.com/art/200912/168453.htm


explain顯示了mysql如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優化的查詢語句。

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

如:

  1. explain?select?surname,first_name?form?a,b?where?a.id=b.id?

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


【責任編輯:彭凡 TEL:(010)68476606】

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276176.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276176.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276176.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Shell編程基礎

我們可以使用任意一種文字編輯器&#xff0c;比如gedit、kedit、emacs、vi等來編寫shell腳本&#xff0c;它必須以如下行開始&#xff08;必須放在文件的第一行&#xff09;&#xff1a; # !/bin/sh ...注意&#xff1a;最好使用“!/bin/bash”而不是“!/bin/sh”&#xff0c;…

總結:自學前端的高效學習路線

提到前端&#xff0c;大多數人都會想到薪資高。也正因為如此&#xff0c;很多人想要從事前端開發這個崗位&#xff0c;也由此衍生出來一個問題&#xff1a;為什么前端工程師供不應求&#xff0c;但還是有很多學前端的人找不到工作&#xff1f;其實行業不是缺前端工程師&#xf…

機器人出魔切還是三相_英雄聯盟:輔助也要去上單,機器人布里茨玩法介紹

英雄聯盟&#xff1a;輔助也要去上單&#xff0c;機器人布里茨玩法介紹出裝方面我們都知道他的被動是可以將法力值化為機的護盾的&#xff0c;而這樣的話裝備就可以選擇魔切&#xff0c;然后再出一個鞋子&#xff0c;為什么不先出三項呢&#xff1f;三項的性價比是比較高的&…

vmware創建虛擬機不識別網卡

今天在給虛擬機添加網卡的時候&#xff0c;出現了虛擬機不識別新加的網卡&#xff0c;很納悶&#xff0c;連的一樣的端口組&#xff0c;為什么新加的網卡識別不了呢 然后查看pci設備&#xff0c;發現網卡的驅動為 AMD 79C970 PCnet32- LANCE 然后都vc上查看&#xff0c;果真驅動…

轉:26個Jquery使用小技巧(jQuery tips, tricks solutions)

26個Jquery使用小技巧(jQuery tips, tricks & solutions) 前段時間發布了Jquery類庫1.4版本&#xff0c;使用者也越來越多&#xff0c;為了方便大家對Jquery的使用&#xff0c;下面列出了一些Jquery使用技巧。比如有禁止右鍵點擊、隱藏搜索文本框文字、在新窗口中打開鏈接…

周末包郵送書和小紅包中獎名單公布

大家好&#xff0c;我是若川。周末送福利&#xff0c;給大家送紅包、包郵送新書&#xff01;這篇文章中&#xff0c;準備了3本自選前端新書&#xff0c;10個2元小紅包&#xff0c;在看抽10人每人5元紅包&#xff0c;2月28日晚8點開獎。現將名單公布如下&#xff1a;在看抽獎&am…

Ubuntu 命令行修改網絡配置方法

轉載鏈接&#xff1a;http://www.jb51.net/article/15807.htm Ubuntu 命令行修改網絡配置方法 /etc/network/interfaces 打開后里面可設置DHCP或手動設置靜態ip。前面auto eth0&#xff0c;讓網卡開機自動掛載. 1. 以DHCP方式配置網卡 編輯文件/etc/network/interfaces: sudo v…

python treeview底部加個按鈕_Python爬取京東商品信息(GUI版本)

前言本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。作者&#xff1a;DYblog轉載&#xff1a;https://www.cnblogs.com/dy8888/p/13257918.htmlPS&#xff1a;如有需要Python學習資料的小伙伴可以加點擊…

Linux下編譯安裝Mysql簡單步驟

常規方式編譯安裝MySQL時&#xff0c;適合用第一條最正宗的MySQL產品線5.2及以前版本&#xff1a;所謂常規方式編譯安裝MySQL就是延續早期MySQL的3部曲安裝方式&#xff0c;即./configure;make;make install&#xff0c;下面是老男孩在早期的企業生產場景下操作過的具體命令及參…

Vue.js 3.0 響應式 API 比 2.x 好在哪兒?

Hello&#xff0c;各位小伙伴&#xff0c;接下來的一段時間里&#xff0c;我會把我的課程《Vue.js 3.0 核心源碼解析》中問題的答案陸續在我的公眾號發布&#xff0c;由于課程的問題大多數都是開放性的問題&#xff0c;所以我的答案也不一定是標準的&#xff0c;僅供你參考喔。…

招聘.NET程序員

人才難找啊&#xff0c;順便發個招聘啟事。 西安瀚博科技有限公司招聘.NET程序員&#xff0c;有工作經驗者優先 如有意向&#xff0c;請發郵件到 slzhanghiweb.cn 轉載于:https://www.cnblogs.com/shengli/archive/2010/03/08/1680861.html

xml解析類

轉載鏈接&#xff1a;http://zyan.cc/post/253 今天在PHP4環境下重新寫一個接口程序&#xff0c;需要大量分析解析XML&#xff0c;PHP的xml_parse_into_struct()函數不能直接生成便于使用的數組&#xff0c;而SimpleXML擴展在PHP5中才支持&#xff0c;于是逛逛搜索引擎&#x…

jmeter學習指南之聚合報告

jmeter視頻地址&#xff1a;https://edu.51cto.com/course/14305.html 上一篇文章中我們講了Jmeter結果分析最常用的一個Listener查看結果樹&#xff0c;今天接著講另一個最常用的listener--聚合報告Aggregate Report。我們先來看看聚合報告中的主要名稱的含意&#xff1a;Labe…

敏捷開發概述

敏捷方法強調適應性而非預見性。 目前列入敏捷方法的有&#xff1a; 軟件開發節奏&#xff0c;Software Development Rhythms 敏捷數據庫技術&#xff0c;AD/Agile Database Techniques 敏捷建模&#xff0c;AM/Agile Modeling 自適應軟件開發&#xff0c;ASD/Adaptive Softwar…

2021 整理的最全學習資源,送給每一個努力著的人

時間來到了 2021 年&#xff0c;新的一年有新的期待&#xff0c;而我亦有新的祝福如果說在過去的一年&#xff0c;經歷太多&#xff0c;心酸、迷茫、焦慮、幸福、喜悅那么在 2021 年&#xff0c;希望你可以去過一種遇見自己的生活&#xff0c;恬淡、熱情&#xff0c;喜歡自己而…

ubuntu+php環境下的Memcached 安裝方法

轉載鏈接&#xff1a;http://www.jb51.net/article/28887.htm Memcached是一套分散式的高速緩存系統&#xff0c;當初是Danga Interactive為了LiveJournal所發展。 目前被很多系統所使用&#xff0c;例如Flick、Twitter等。這是一套開放源代碼軟件&#xff0c;以BSD license授…

php移動簽批源碼_PHP讓網站移動訪問更加友好方法

PHP都是在服務器上處理的&#xff0c;所以當代碼到達用戶時&#xff0c;它只是HTML。基本上&#xff0c;用戶從你的服務器請求你網站的一個頁面&#xff0c;然后你的服務器運行所有的PHP并向用戶發送PHP的結果。設備實際上從未看到或必須使用實際的PHP代碼。這使得使用PHP完成的…

Chrome OS 設備或將允許用戶自行選擇 Linux 發行版

百度智能云 云生態狂歡季 熱門云產品1折起>>> 谷歌去年宣布在 Chrome OS 上支持運行 Linux 應用&#xff0c;前不久又有消息稱其將為運行這些 Linux 應用提供 GPU 加速支持&#xff0c;而現在&#xff0c;Chrome OS 似乎將在 Linux 的方向上更進一步&#xff0c;讓 …

博文視點 OpenParty第11期:世界黑客大會那些事

博文視點 OpenParty第11期&#xff1a;世界黑客大會那些事 親愛的讀者朋友&#xff1a; 您好&#xff01; 2009年&#xff0c;博文視點Open Party共舉辦8場&#xff0c;累計到場2000人次&#xff0c;影響力輻射近5000人次&#xff0c;真正實現了博文視點Open Party的初…

我從 Vuejs 中學到了什么——框架設計學問

框架設計遠沒有大家想的那么簡單&#xff0c;并不是說只把功能開發完成&#xff0c;能用就算完事兒了&#xff0c;這里面還是有很多學問的。比如說&#xff0c;我們的框架應該給用戶提供哪些構建產物&#xff1f;產物的模塊格式如何&#xff1f;當用戶沒有以預期的方式使用框架…