久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

        千鋒教育

        掃一掃進入千鋒手機站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時隨地免費學(xué)習(xí)課程

        當前位置:首頁  >  技術(shù)干貨  > SQL優(yōu)化之EXPLAIN執(zhí)行計劃

        SQL優(yōu)化之EXPLAIN執(zhí)行計劃

        來源:千鋒教育
        發(fā)布人:zyh
        時間: 2023-06-12 14:57:00 1686553020

          全文大約【1965】字,不說廢話,只講可以讓你學(xué)到技術(shù)、明白原理的純干貨!本文帶有豐富案例及配圖視頻,讓你更好的理解和運用文中的技術(shù)概念,并可以給你帶來具有足夠啟迪的思考......

          一. EXPLAIN執(zhí)行計劃分析

          EXPLAIN可以幫助開發(fā)人員分析SQL問題,EXPLAIN顯示了MySQL如何使用使用SQL執(zhí)行計劃,可以幫助開發(fā)人員寫出更優(yōu)化的查詢語句。使用方法,在select語句前加上EXPLAIN就可以了。

          1.小編舉栗:

          下面是一個最普通的查詢語句,用EXPLAIN進行分析演示。  

        EXPLAIN SELECT * FROM student;

          結(jié)果:

        1685954028599.image


          2.結(jié)果的列的說明如下:

          id :SELECT識別符。這是SELECT查詢序列號。這個不重要。

          select_type:表示SELECT語句的類型。

          ● simple:簡單select(不使用union或子查詢)。

          ● primary:最外面的select。

          ● union:union中的第二個或后面的select語句。

          ● dependent union:union中的第二個或后面的select語句,取決于外面的查詢。

          ● union result:union的結(jié)果。

          ● subquery:子查詢中的第一個select。

          ● dependent subquery:子查詢中的第一個select,取決于外面的查詢。

          ● derived:導(dǎo)出表的select(from子句的子查詢)。

          table:顯示這查詢的數(shù)據(jù)是關(guān)于哪張表的。

          type:區(qū)間索引,這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為。

        SQL優(yōu)化之EXPLAIN執(zhí)行計劃

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

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

          ● system:表僅有一行,這是const類型的特列,平時不會出現(xiàn),這個也可以忽略不計。

          ● const:數(shù)據(jù)表最多只有一個匹配行,因為只匹配一行數(shù)據(jù),所以很快。

          ● eq_ref:mysql手冊是這樣說的:"對于每個來自于前面的表的行組合,從該表中讀取一行。這可能是最好的聯(lián)接類型,除了const類型。它用在一個索引的所有部分被聯(lián)接使用并且索引是UNIQUE或PRIMARY KEY"。eq_ref可以用于使用=比較帶索引的列。

          ● ref:查詢條件索引既不是UNIQUE也不是PRIMARY KEY的情況。ref可用于=或<或>操作符的帶索引的列。

          ● ref_or_null:該聯(lián)接類型如同ref,但是添加了MySQL可以專門搜索包含NULL值的行。在解決子查詢中經(jīng)常使用該聯(lián)接類型的優(yōu)化。

          ● index_merge:該聯(lián)接類型表示使用了索引合并優(yōu)化方法。在這種情況下,key列包含了使用的索引的清單,key_len包含了使用的索引的最長的關(guān)鍵元素。

          ● unique_subquery:該類型替換了下面形式的IN子查詢的ref: value IN (SELECT primary_key FROM single_table WHERE some_expr) unique_subquery是一個索引查找函數(shù),可以完全替換子查詢,效率更高。

          ● index_subquery:該聯(lián)接類型類似于unique_subquery??梢蕴鎿QIN子查詢,但只適合下列形式的子查詢中的非唯一索引: value IN (SELECT key_column FROM single_table WHERE some_expr)

          ● range:只檢索給定范圍的行,使用一個索引來選擇行。

          ● index:該聯(lián)接類型與ALL相同,除了只有索引樹被掃描。這通常比ALL快,因為索引文件通常比數(shù)據(jù)文件小。

          ● ALL:對于每個來自于先前的表的行組合,進行完整的表掃描(性能最差)。

          possible_keys:指出MySQL能使用哪個索引在該表中找到行。如果是空的,沒有相關(guān)的索引。這時要提高性能,可通過檢驗WHERE子句,看是否引用某些字段,或者檢查字段不是適合索引。

          key:實際使用到的索引。如果為NULL,則沒有使用索引。如果為primary的話,表示使用了主鍵。

          key_len:最長的索引寬度。如果鍵是NULL,長度就是NULL。在不損失精確性的情況下,長度越短越好。

        SQL優(yōu)化之EXPLAIN執(zhí)行計劃

          ref:顯示使用哪個列或常數(shù)與key一起從表中選擇行。

          rows:顯示MySQL認為它執(zhí)行查詢時必須檢查的行數(shù)。

          Extra:執(zhí)行狀態(tài)說明,該列包含MySQL解決查詢的詳細信息。

          ● Distinct:MySQL發(fā)現(xiàn)第1個匹配行后,停止為當前的行組合搜索更多的行。

          ● Not exists:MySQL能夠?qū)Σ樵冞M行LEFT JOIN優(yōu)化,發(fā)現(xiàn)1個匹配LEFT JOIN標準的行后,不再為前面的的行組合在該表內(nèi)檢查更多的行。

          ● range checked for each record (index map: #):MySQL沒有發(fā)現(xiàn)好的可以使用的索引,但發(fā)現(xiàn)如果來自前面的表的列值已知,可能部分索引可以使用。

          ● Using filesort:MySQL需要額外的一次傳遞,以找出如何按排序順序檢索行。

          ● Using index:從只使用索引樹中的信息而不需要進一步搜索讀取實際的行來檢索表中的列信息。

          ● Using temporary:為了解決查詢,MySQL需要創(chuàng)建一個臨時表來容納結(jié)果。

          ● Using where:WHERE 子句用于限制哪一個行匹配下一個表或發(fā)送到客戶。

          ● 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查詢的所有列,而不要額外搜索硬盤訪問實際的表。

          二. 結(jié)語

          小編在這里對本文核心要點進行總結(jié):

          1.本節(jié)講了如何使用EXPLAIN執(zhí)行計劃進行SQL語句分析,判斷SQL語句哪里慢。

          2.比較重要的分析字段有select_type、type、possible_keys、key、ref、rows,這幾列需要熟練掌握。

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
        免費領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        PUE是什么?

        一、PUE是什么PUE,即功耗比(Power Usage Effectiveness),是數(shù)據(jù)中心的能源效率指標。它是數(shù)據(jù)中心總功耗與設(shè)備功耗的比值,用于評估數(shù)據(jù)中...詳情>>

        2023-10-15 07:13:07
        graph cut和graph cuts有什么區(qū)別?

        1.語境不同graph cut”通常在描述一個操作時使用,比如”perform a graph cut”,它指的是在圖中找到一個切割,將圖劃分為兩個...詳情>>

        2023-10-15 07:02:16
        什么是雙機熱備?

        一、雙機熱備的原理雙機熱備是指在系統(tǒng)中配置兩臺服務(wù)器(主服務(wù)器和備份服務(wù)器),兩者通過高速網(wǎng)絡(luò)連接進行實時數(shù)據(jù)同步和狀態(tài)同步。主服務(wù)器...詳情>>

        2023-10-15 06:37:02
        偏最小二乘支持向量機和支持向量機回歸的區(qū)別是什么?

        1.模型構(gòu)建的理論基礎(chǔ)不同支持向量機回歸(SVR)基于統(tǒng)計學(xué)習(xí)理論,其主要思想是找到一個超平面,使得大部分數(shù)據(jù)點都在這個超平面的一定范圍內(nèi),...詳情>>

        2023-10-15 06:30:45
        VAE、GAN和transformer有什么區(qū)別?

        1.模型結(jié)構(gòu)不同VAE(變分自編碼器)是一種生成模型,其基于概率圖模型和自編碼器,能夠?qū)W習(xí)數(shù)據(jù)的潛在分布。GAN(生成對抗網(wǎng)絡(luò))同樣是一種生成...詳情>>

        2023-10-15 06:10:12
        博白县| 永平县| 邮箱| 安阳县| 伊吾县| 江孜县| 镇沅| 永泰县| 怀化市| 莱芜市| 桑日县| 邢台市| 平乐县| 洛南县| 紫阳县| 竹北市| 巴林左旗| 阿坝| 广南县| 苍梧县| 临猗县| 广昌县| 连城县| 忻州市| 兴仁县| 丽水市| 石屏县| 屏南县| 日喀则市| 西华县| 晋中市| 石门县| 县级市| 漠河县| 商洛市| 波密县| 公安县| 红桥区| 遂宁市| 连平县| 若羌县|