中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中EXPLAIN語句怎么使用

發布時間:2022-05-20 14:32:30 來源:億速云 閱讀:147 作者:iii 欄目:開發技術

這篇文章主要介紹了MySQL中EXPLAIN語句怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇MySQL中EXPLAIN語句怎么使用文章都會有所收獲,下面我們一起來看看吧。

    前言

    在MySQL中 DESCRIBE 和 EXPLAIN 語句是相同的意思。DESCRIBE 語句多用于獲取表結構,而 EXPLAIN 語句用于獲取查詢執行計劃(用于解釋MySQL如何執行查詢語句)。

    通過 EXPLAIN 語句可以幫助我們發現表格的哪些字段上需要建立索引,用于加速查詢。也可以使用 EXPLAIN 檢查優化器是否使用最優的順序來連接表。

    EXPLAIN 語法如下:

    {EXPLAIN | DESCRIBE | DESC}
        tbl_name [col_name | wild]
    
    {EXPLAIN | DESCRIBE | DESC}
        [explain_type]
        {explainable_stmt | FOR CONNECTION connection_id}
    
    {EXPLAIN | DESCRIBE | DESC} ANALYZE [FORMAT = TREE] select_statement
    
    explain_type: {
        FORMAT = format_name
    }
    
    format_name: {
        TRADITIONAL
      | JSON
      | TREE
    }
    
    explainable_stmt: {
        SELECT statement
      | TABLE statement
      | DELETE statement
      | INSERT statement
      | REPLACE statement
      | UPDATE statement
    }

    1、獲取表結構

    DESCRIBE 是 SHOW COLUMNS 的快捷方式,也可以用于顯示View 的信息,SHOW COLUMNS提供了更多的列信息。

    SHOW CREATE TABLE, SHOW TABLE STATUS, SHOW INDEX 也用于提供表信息。

    DESCRIBE 默認顯示所有列的信息,如果指定了 col_name 將只顯示該列的信息。wild 用于指定模式串,可以使用SQL通配符 % 和 _。如果指定了 wild ,將顯示與模式串匹配的列信息。如果沒有特殊字符(空格或其它特殊字符),模式串不需要使用引號括起來。

    DESCRIBE City;
    # 等同于
    SHOW COLUMNS FROM City;

    2、獲取執行計劃信息

    • DESCRIBE 可以查詢 SELECT, DELETE, INSERT, REPLACE, UPDATE 的執行信息。MySQL 8.0.19 也可以查詢 TABLE 語句。

    • MySQL從優化器獲取可解釋語句的執行計劃信息,包括參與的表、順序等信息。

    • 如果使用FOR CONNECTION connection_id語句,MySQL顯示該命名連接的執行計劃。

    • EXPLAIN 語句產生的執行計劃信息可以通過 SHOW WARNINGS 顯示。

    • FORMAT 選項用于指定輸出格式,TRADITIONAL 是默認的輸出格式,以表格形式顯示。

    EXPLAIN 需要的權限與被執行解釋語句的權限相同,解釋 view 語句時需要 SHOW VIEW 權限,EXPLAIN ... FOR CONNECTION需要 PROCESS 權限。
    可以使用 SELECT STRAIGHT_JOIN 來告訴優化器使用 SELECT 指定的連接順序。

    3、使用 EXPLAIN ANALYZE 獲取信息

    MySQL 8.0.18 推薦使用 EXPLAIN ANALYZE,該語句可以輸出語句的執行時間和以下信息

    • 預計執行時間

    • 預計返回的行數

    • 返回第一行的時間

    • 迭代器的執行時間,單位毫秒

    • 迭代器返回的行數

    • 執行循環的次數

    查詢信息以 TREE 的形式輸出,每個節點代表一個迭代器。EXPLAIN ANALYZE 可以用于 SELECT 語句,以及多表的 UPDATE 和 DELETE 語句,MySQL 8.0.19 以后也可以用于 TABLE 語句。EXPLAIN ANALYZE 不能使用 FOR CONNECTION 。

    MySQL 8.0.20 以后可以通過 KILL QUERY 或 CTRL-C 終止該語句的執行。

    mysql> EXPLAIN ANALYZE SELECT * FROM t1 JOIN t2 ON (t1.c1 = t2.c2)\G
    *************************** 1. row ***************************
    EXPLAIN: -> Inner hash join (t2.c2 = t1.c1)  (cost=4.70 rows=6)
    (actual time=0.032..0.035 rows=6 loops=1)
       -> Table scan on t2  (cost=0.06 rows=6)
    (actual time=0.003..0.005 rows=6 loops=1)
       -> Hash
           -> Table scan on t1  (cost=0.85 rows=6)
    (actual time=0.018..0.022 rows=6 loops=1)
    
    mysql> EXPLAIN ANALYZE SELECT * FROM t3 WHERE i > 8\G
    *************************** 1. row ***************************
    EXPLAIN: -> Filter: (t3.i > 8)  (cost=1.75 rows=5)
    (actual time=0.019..0.021 rows=6 loops=1)
       -> Table scan on t3  (cost=1.75 rows=15)
    (actual time=0.017..0.019 rows=15 loops=1)
    
    mysql> EXPLAIN ANALYZE SELECT * FROM t3 WHERE pk > 17\G
    *************************** 1. row ***************************
    EXPLAIN: -> Filter: (t3.pk > 17)  (cost=1.26 rows=5)
    (actual time=0.013..0.016 rows=5 loops=1)
       -> Index range scan on t3 using PRIMARY  (cost=1.26 rows=5)
    (actual time=0.012..0.014 rows=5 loops=1)

    關于“MySQL中EXPLAIN語句怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“MySQL中EXPLAIN語句怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    璧山县| 湛江市| 台中县| 镇沅| 中超| 荣昌县| 健康| 闸北区| 石棉县| 五大连池市| 铜梁县| 博兴县| 遂川县| 山东省| 监利县| 沭阳县| 竹山县| 娄烦县| 云梦县| 武义县| 元氏县| 凤山市| 轮台县| 沐川县| 西乌| 清苑县| 会昌县| 鄂尔多斯市| 那坡县| 绍兴市| 措勤县| 高唐县| 宁蒗| 仁化县| 南涧| 新泰市| 石林| 东港市| 华池县| 依安县| 夏津县|