亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MYSQL?EXPLAIN結果解讀

 更新時間:2024年10月24日 09:45:12   作者:數(shù)據(jù)庫農(nóng)民工  
本文主要介紹了MySQL查詢中的一些關鍵字,如:SIMPLE,PRIMARY,UNION,DEPENDENTUNION,UNIONRESULT,SUBQUERY,DEPENDENTSUBQUERY,DERIVED,UNCACHEABLESUBQUERY等,文章詳細解析了這些關鍵字的含義和用途

MYSQL EXPLAIN結果解讀

  • EXPLAIN不會告訴你關于觸發(fā)器、存儲過程的信息或用戶自定義函數(shù)對查詢的影響情況。
  • EXPLAIN不考慮各種Cache(緩存)。
  • EXPLAIN不能顯示MySQL在執(zhí)行查詢時所作的優(yōu)化工作。部分統(tǒng)計信息是估算的,并非精確值。    
  • EXPALIN只能解釋SELECT操作,其他操作要重寫為SELECT后查看執(zhí)行計劃。

1 id

select的識別符,這是select的查詢序列號。

  • 如果有兩列數(shù)據(jù)id相同,則為同一組查詢,由上到下執(zhí)行。
  • 如果id值不同,id值越大,優(yōu)先級越高。

2 select_type

select的類型

  • SIMPLE(simple):簡單SELECT(不使用UNION或子查詢)。 
  • PRIMARY(primary):子查詢中最外層查詢,查詢中若包含任何復雜的子部分,最外層的select被標記為PRIMARY。 
  • UNION(union):UNION中的第二個或后面的SELECT語句。 
  • DEPENDENT UNION(dependent union):UNION中的第二個或后面的SELECT語句,取決于外面的查詢。 
  • UNION RESULT(union result):UNION的結果,union語句中第二個select開始后面所有select。 
  • SUBQUERY(subquery):子查詢中的第一個SELECT,結果不依賴于外部查詢。 
  • DEPENDENT SUBQUERY(dependent subquery):子查詢中的第一個SELECT,依賴于外部查詢。 
  • DERIVED(derived):派生表的SELECT (FROM子句的子查詢)。 
  • UNCACHEABLE SUBQUERY(uncacheable subquery):(一個子查詢的結果不能被緩存,必須重新評估外鏈接的第一行)

3 table

  • 輸出結果集的表名稱。

4 partitions

  • 輸出結果集的表所在的分區(qū)

5 TYPE

  • type顯示的是訪問類型,是較為重要的一個指標,結果值從好到壞依次是:

Null > system > const > eq_ref > ref > ref_or_null> index_merge > unique_subquery > index_subquery > range > index > ALL

一般來說,得保證查詢至少達到range級別,最好能達到ref。

我們在進行條件查詢時,建議使用索引,否則將引起全表掃描,IO的開銷和程序的性能都沒法保證!

  • NULL: MySQL在優(yōu)化過程中分解語句,執(zhí)行時甚至不用訪問表或索引,例如從一個索引列里選取最小值可以通過單獨索引查找完成。 
  • system:表僅有一行(=系統(tǒng)表)。這是const聯(lián)接類型的一個特例。當MySQL對查詢某部分進行優(yōu)化,并轉換為一個常量時,使用這些類型( system/const )訪問。如將主鍵置于where列表中,MySQL就能將該查詢轉換為一個常量。當查詢的表只有一行的情況下,使用system。 
  • const:表最多有一個匹配行,它將在查詢開始時被讀取。因為僅有一行,在這行的列值可被優(yōu)化器剩余部分認為是常數(shù)。const表很快,因為它們只讀取一次! 
  • eq_ref:類似ref,區(qū)別就在使用的索引是唯一索引,對于每個索引鍵值,表中只有一條記錄匹配,簡單來說,就是多表連接中使用primary key或者 unique key作為關聯(lián)條件。這可能是最好的聯(lián)接類型,除了const類型。 
  • ref:表示上述表的連接匹配條件,即哪些列或常量被用于查找索引列上的值。 
  • ref_or_null:該聯(lián)接類型如同ref,但是添加了MySQL可以專門搜索包含NULL值的行。 
  • index_merge:該聯(lián)接類型表示使用了索引合并優(yōu)化方法。【不常用】 
  • unique_subquery:該類型替換了下面形式的IN子查詢的 ref:value IN (SELECT primary_key FROM single_table WHERE some_expr) unique_subquery是一個索引查找函數(shù),可以完全替換子查詢,效率更高?!静怀S谩?nbsp;
  • index_subquery:該聯(lián)接類型類似于unique_subquery。可以替換IN子查詢,但只適合下列形式的子查詢中的非唯一索引:value IN (SELECT key_column FROM single_table WHERE some_expr)。【不常用】 
  • range:只檢索給定范圍的行,使用一個索引來選擇行。 
  • index:該聯(lián)接類型與ALL相同,F(xiàn)ull Index Scan,index與ALL區(qū)別為index類型只遍歷索引樹。這通常比ALL快,因為索引文件通常比數(shù)據(jù)文件小。 
  • ALL:Full Table Scan, MySQL將遍歷全表以找到匹配的行。

6 possible_keys

  • 表示查詢時,可能使用的索引。( MySQL能使用哪個索引在該表中找到行)

7 key

  • 實際使用的索引(鍵),必然包含在possible_keys中。如果沒有選擇索引,索引是NULL。
  • 要想強制MySQL使用或忽視possible_keys列中的索引,
  • 在查詢中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

8 key_len

  • 索引的長度 ( 使用的字節(jié)數(shù) )。如果索引是NULL,則長度為NULL。
  • 不損失精確性的情況下,長度越短越好 。key_len顯示的值為索引字段的最大可能長度,
  • 并非實際使用長度,即key_len是根據(jù)表定義計算而得,不是通過表內檢索出的。

9 ref

  • 使用哪個列或常數(shù),與索引一起被用于從表中查找索引列上的值。( 列與索引的比較,表示上述表的連接匹配條件。)

10 rows

  • MySQL認為它執(zhí)行查詢時必須檢查的行數(shù)既預估掃描的行數(shù)。

11 filtered

  • 通過表條件過濾出的行數(shù)的百分比估計值。

12 Extra

Mysql執(zhí)行情況的描述和詳細說明。

  • Distinct:MySQL發(fā)現(xiàn)第1個匹配行后,停止為當前的行組合搜索更多的行。 
  • Not exists:MySQL能夠對查詢進行LEFT JOIN優(yōu)化,發(fā)現(xiàn)1個匹配LEFT JOIN標準的行后,不再為前面的的行組合在該表內檢查更多的行。 
  • range checked for each record (index map: #):MySQL沒有發(fā)現(xiàn)好的可以使用的索引,但發(fā)現(xiàn)如果來自前面的表的列值已知,可能部分索引可以使用。 
  • Using filesort:當Query中包含 order by 操作,而且無法利用索引完成的排序操作稱為“文件排序”。 
  • Using index:只使用索引樹中的信息而不需要進一步搜索讀取實際的行來檢索表中的列信息。 
  • Using temporary:為了解決查詢,MySQL需要創(chuàng)建一個臨時表來容納結果集,常見于排序和分組查詢,常見 group by、order by。 
  • Using where:不用讀取表中所有信息,僅通過索引就可以獲取所需數(shù)據(jù),這發(fā)生在對表的全部的請求列都是同一個索引的部分的時候,表示mysql服務器將在存儲引擎檢索行后再進行過濾。 
  • Using sort_union(…)Using union(…)、Using intersect(…):這些函數(shù)說明如何為index_merge聯(lián)接類型合并索引掃描。 
  • Using index for group-by:類似于訪問表的Using index方式,Using index for group-by表示MySQL發(fā)現(xiàn)了一個索引,可以用來查詢GROUP BY或DISTINCT查詢的所有列,而不要額外搜索硬盤訪問實際的表。 
  • Using join buffer:改值強調了在獲取連接條件時沒有使用索引,并且需要連接緩沖區(qū)來存儲中間結果。如果出現(xiàn)了這個值,那應該注意,根據(jù)查詢的具體情況可能需要添加索引來改進能。 
  • Impossible where:這個值強調了where語句會導致沒有符合條件的行(通過收集統(tǒng)計信息不可能存在結果)。 
  • Select tables optimized away:這個值意味著僅通過使用索引,優(yōu)化器可能僅從聚合函數(shù)結果中返回一行。 
  • No tables used:Query語句中使用from dual 或不含任何from子句。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 深入解析mysql中order by與group by的順序問題

    深入解析mysql中order by與group by的順序問題

    本篇文章是對mysql中order by與group by的順序問題進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL中將一列以逗號分隔的值行轉列的實現(xiàn)

    MySQL中將一列以逗號分隔的值行轉列的實現(xiàn)

    這篇文章主要介紹了MySQL中將一列以逗號分隔的值行轉列的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • MySQL表中添加數(shù)據(jù)的方法

    MySQL表中添加數(shù)據(jù)的方法

    這篇文章主要介紹了MySQL表中添加數(shù)據(jù)的方法,本文通過sql語句給大家詳細講解,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • Linux下mysql 8.0.15 安裝配置圖文教程以及修改密碼

    Linux下mysql 8.0.15 安裝配置圖文教程以及修改密碼

    這篇文章主要為大家詳細介紹了Linux下mysql 8.0.15安裝配置圖文教程以及修改密碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • mysql修復數(shù)據(jù)表的命令方法

    mysql修復數(shù)據(jù)表的命令方法

    網(wǎng)站運行中mysql的數(shù)據(jù)表難免會出現(xiàn)類似"is marked as crashed and should be repaired"的錯誤,我們可以用下面這個命令修復
    2014-02-02
  • mysql 5.7.18 zip版安裝使用教程

    mysql 5.7.18 zip版安裝使用教程

    這篇文章主要為大家詳細介紹了mysql 5.7.18 zip版安裝使用教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Mysql復制表三種實現(xiàn)方法及grant解析

    Mysql復制表三種實現(xiàn)方法及grant解析

    這篇文章主要介紹了Mysql復制表三種實現(xiàn)方法及grant解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • mysql拆分字符串作為查詢條件的示例代碼

    mysql拆分字符串作為查詢條件的示例代碼

    本文主要介紹了mysql拆分字符串作為查詢條件的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • mysql命令行愛好者必備工具mycli

    mysql命令行愛好者必備工具mycli

    這篇文章主要介紹了mysql命令行愛好者必備工具mycli的相關知識,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • mysql 如何使用JSON_EXTRACT() 取json值

    mysql 如何使用JSON_EXTRACT() 取json值

    這篇文章主要介紹了mysql如何使用JSON_EXTRACT() 取json值的操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論