<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ![](https://img.kancloud.cn/41/e0/41e066af9a6c25a24868d9667253ec98_1241x333.jpg) ***** ## explain ### explain是什么? 使用explain關鍵字可以模擬優化器執行SQL查詢語句,從而知道MySQL是如何處理你的SQL語句的。 ### explain能干嘛? * 表的讀取順序 * 數據讀取操作的操作類型 * 那些索引可以使用 * 那些索引被實際使用 * 表之間的引用 * 每張表有多少行被優化器查詢 ### explain怎么玩? ~~~ explain + SQL語句 ~~~ ## explain字段解釋 ### id表的讀取順序 <br> select查詢的順序號,包含一組數字,表示查詢中執行select子句或操作表的順序 <br> 兩種情況: 1.id相同,執行順序由上至下 2.id不同,如果是子查詢,id的序號會遞增,id值越大優先級越高,越先被執行 ### select\_type---數據讀取操作的操作類型 1.simple 簡單的select查詢,查詢中不包含子查詢或者union 2.primary 查詢中若包含任何復雜的子部分,最外層查詢則被標記。就是最后加載的那個 3.subquery 在select或where列表中包含了子查詢 4.union 若第二個select出現在union之后,則被標記為union 5.union result 從union表獲取結果的select ### table---顯示這一行的數據時關于那張表的 ### partitions-查詢訪問的分區 ### type ![](https://img.kancloud.cn/9e/bc/9ebcd1251ab29189480c3fda677dcc04_739x70.png) 從最好到最差依次是 ``` system > const > eq_ref > ref > range > index > ALL ``` - system,表只有一行記錄(等于系統表),這是const類型的特例 - const表示通過索引一次就找到了,const用于比較primary key - eq\_ref,唯一索引掃描,對于每個索引鍵,表中只有一條記錄與之匹配 - ref,非唯一性索引掃描,返回匹配某個單獨值得所有行,本質上也是一種索引訪問,它返回所有匹配某個單獨值的行 * range,只檢索給定范圍的行,使用一個索引來選擇行。 * index,Full Index Scan,index與ALL區別為index類型只遍歷索引樹。 * ALL,將遍歷全表找到匹配的行 ### possible\_keys 顯示可能應用在這張表中的索引,一個或多個。 ### key 實際使用的索引。如果為null,則沒有使用索引 <br>查詢中若使用了覆蓋索引,則該索引僅出現在key列表中 ### key\_len 表示索引中使用的字節數,可通過該列計算查詢中使用的索引長度。在不損失精確性的情況下,長度越短越好 key\_len顯示的值為索引字段的最大可能長度,并非實際使用長度,即key\_len是根據表定義計算而得,不是通過表內檢索出的 #### 索引長度計算 ~~~ varchr(24)變長字段且允許NULL 24*(Character Set:utf8=3,gbk=2,latin1=1)+1(NULL)+2(變長字段) varchr(10)變長字段且不允許NULL 10*(Character Set:utf8=3,gbk=2,latin1=1)+2(變長字段) char(10)固定字段且允許NULL 10*(Character Set:utf8=3,gbk=2,latin1=1)+1(NULL) char(10)固定字段且不允許NULL 10*(Character Set:utf8=3,gbk=2,latin1=1) ~~~ ### ref 顯示索引那一列被使用到了 ### rows 根據表統計信息及索引選用情況,大致估算出找到所需的記錄所需要讀取的行數 ![](https://img.kancloud.cn/bc/a3/bca3de5fde55df00ba967d58cc818e42_972x301.png) ### Extra 包含不適合在其他列中顯示但十分重要的額外信息 - Using filesort,說明mysql會對數據使用一個外部的索引排序,而不是按照表內的索引順序進行讀取,MySQL中無法利用索引完成的排序操作稱為"文件排序" - Using temporary,使用臨時表保存中間結果,MySQL在對查詢結果排序時使用臨時表。 - Using index,使用了索引,避免了全表掃描 * Using where,使用了where過濾 * Using join buffer,使用了連接緩存 * impossible where,不可能的條件,where子句的值總是false
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看