• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創(chuàng)于2000年 股票代碼:831685
    咨詢(xún)熱線(xiàn):0371-60135900 注冊(cè)有禮 登錄
    • 掛牌上市企業(yè)
    • 60秒人工響應(yīng)
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補(bǔ)償
    全部產(chǎn)品
    您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

    SQL之EXPLAIN語(yǔ)法詳解

    發(fā)布時(shí)間:  2012/8/31 17:14:02

    1、EXPLAIN tbl_name

    EXPLAIN tbl_name是DESCRIBE tbl_name或SHOW COLUMNS FROM tbl_name的一個(gè)同義詞。

    2、EXPLAIN [EXTENDED] SELECT select_options

    如果在SELECT語(yǔ)句前放上關(guān)鍵詞EXPLAIN,MySQL將解釋它如何處理SELECT,提供有關(guān)表如何聯(lián)接和聯(lián)接的次序。

    借助于EXPLAIN,可以知道什么時(shí)候必須為表加入索引以得到一個(gè)使用索引來(lái)尋找記錄的更快的SELECT。

    還可以知道優(yōu)化器是否以一個(gè)最佳次序聯(lián)接表。為了強(qiáng)制優(yōu)化器讓一個(gè)SELECT語(yǔ)句按照表命名順序的聯(lián)接次序,語(yǔ)句應(yīng)以STRAIGHT_JOIN而不只是SELECT開(kāi)頭。

    EXPLAIN為用于SELECT語(yǔ)句中的每個(gè)表返回一行信息。表以它們?cè)谔幚聿樵?xún)過(guò)程中將被MySQL讀入的順序被列出。MySQL用一遍掃描多次聯(lián)接(single-sweep multi-join)的方式解決所有聯(lián)接。這意味著MySQL從第一個(gè)表中讀一行,然后找到在第二個(gè)表中的一個(gè)匹配行,然后在第3個(gè)表中等等。當(dāng)所有的表處理完后,它輸出選中的列并且返回表清單直到找到一個(gè)有更多的匹配行的表。從該表讀入下一行并繼續(xù)處理下一個(gè)表。

    當(dāng)使用EXTENDED關(guān)鍵字時(shí),EXPLAIN產(chǎn)生附加信息,可以用SHOW WARNINGS瀏覽。該信息顯示優(yōu)化器限定SELECT語(yǔ)句中的表和列名,重寫(xiě)并且執(zhí)行優(yōu)化規(guī)則后SELECT語(yǔ)句是什么樣子,并且還可能包括優(yōu)化過(guò)程的其它注解。

    EXPLAIN的每個(gè)輸出行提供一個(gè)表的相關(guān)信息,并且每個(gè)行包括下面的列:

    id:SELECT識(shí)別符。這是SELECT的查詢(xún)序列號(hào)。

    select_type:SELECT類(lèi)型。

    1. SIMPLE: 簡(jiǎn)單SELECT(不使用UNION或子查詢(xún))
    2. PRIMARY: 最外面的SELECT
    3. UNION:UNION中的第二個(gè)或后面的SELECT語(yǔ)句
    4. DEPENDENT UNION:UNION中的第二個(gè)或后面的SELECT語(yǔ)句,取決于外面的查詢(xún)
    5. UNION RESULT:UNION的結(jié)果
    6. SUBQUERY:子查詢(xún)中的第一個(gè)SELECT
    7. DEPENDENT SUBQUERY:子查詢(xún)中的第一個(gè)SELECT,取決于外面的查詢(xún)
    8. DERIVED:導(dǎo)出表的SELECT(FROM子句的子查詢(xún))

    table:表名

    type:聯(lián)接類(lèi)型

    1. system:表僅有一行(=系統(tǒng)表)。這是const聯(lián)接類(lèi)型的一個(gè)特例。
    2. const:表最多有一個(gè)匹配行,它將在查詢(xún)開(kāi)始時(shí)被讀取。因?yàn)閮H有一行,在這行的列值可被優(yōu)化器剩余部分認(rèn)為是常數(shù)。const用于用常數(shù)值比較PRIMARY KEY或UNIQUE索引的所有部分時(shí)。
    3. eq_ref:對(duì)于每個(gè)來(lái)自于前面的表的行組合,從該表中讀取一行。這可能是最好的聯(lián)接類(lèi)型,除了const類(lèi)型。它用在一個(gè)索引的所有部分被聯(lián)接使用并且索引是UNIQUE或PRIMARY KEY。eq_ref可以用于使用= 操作符比較的帶索引的列。比較值可以為常量或一個(gè)使用在該表前面所讀取的表的列的表達(dá)式。
    4. ref:對(duì)于每個(gè)來(lái)自于前面的表的行組合,所有有匹配索引值的行將從這張表中讀取。如果聯(lián)接只使用鍵的最左邊的前綴,或如果鍵不是UNIQUE或PRIMARY KEY(換句話(huà)說(shuō),如果聯(lián)接不能基于關(guān)鍵字選擇單個(gè)行的話(huà)),則使用ref。如果使用的鍵僅僅匹配少量行,該聯(lián)接類(lèi)型是不錯(cuò)的。ref可以用于使用=或<=>操作符的帶索引的列。
    5. ref_or_null:該聯(lián)接類(lèi)型如同ref,但是添加了MySQL可以專(zhuān)門(mén)搜索包含NULL值的行。在解決子查詢(xún)中經(jīng)常使用該聯(lián)接類(lèi)型的優(yōu)化。
    6. index_merge:該聯(lián)接類(lèi)型表示使用了索引合并優(yōu)化方法。在這種情況下,key列包含了使用的索引的清單,key_len包含了使用的索引的最長(zhǎng)的關(guān)鍵元素。
    7. unique_subquery:該類(lèi)型替換了下面形式的IN子查詢(xún)的ref:value IN (SELECT primary_key FROMsingle_table WHERE some_expr);unique_subquery是一個(gè)索引查找函數(shù),可以完全替換子查詢(xún),效率更高。
    8. index_subquery:該聯(lián)接類(lèi)型類(lèi)似于unique_subquery?梢蕴鎿QIN子查詢(xún),但只適合下列形式的子查詢(xún)中的非唯一索引:value IN (SELECT key_column FROM single_table WHERE some_expr)
    9. range:只檢索給定范圍的行,使用一個(gè)索引來(lái)選擇行。key列顯示使用了哪個(gè)索引。key_len包含所使用索引的最長(zhǎng)關(guān)鍵元素。在該類(lèi)型中ref列為NULL。當(dāng)使用=、<>、>、>=、<、<=、IS NULL、<=>、BETWEEN或者IN操作符,用常量比較關(guān)鍵字列時(shí),可以使用range
    10. index:該聯(lián)接類(lèi)型與ALL相同,除了只有索引樹(shù)被掃描。這通常比ALL快,因?yàn)樗饕募ǔ1葦?shù)據(jù)文件小。
    11. all:對(duì)于每個(gè)來(lái)自于先前的表的行組合,進(jìn)行完整的表掃描。如果表是第一個(gè)沒(méi)標(biāo)記const的表,這通常不好,并且通常在它情況下很差。通?梢栽黾痈嗟乃饕灰褂肁LL,使得行能基于前面的表中的常數(shù)值或列值被檢索出。

    本文出自:億恩科技【www.vbseamall.com】

    服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話(huà):0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話(huà):0371-60135900
  • 專(zhuān)注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問(wèn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      0
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線(xiàn)