<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # id select 查詢的序列號,包含一組數字,表示查詢中執行的select子句或操作表的順序 **id相同** 執行順序從上到下 ![](https://img.kancloud.cn/08/d1/08d13dfdb645a6e71053f6d6a66f9fce_520x258.png) **id不同** 如果是子查詢,id序號會遞增,id越大優先級越高,越先被執行 ![](https://img.kancloud.cn/e9/a6/e9a6e83bd1a03b8f8ef1b137d9c44d0d_1141x347.png) **id相同,不同,同時存在** ![](https://img.kancloud.cn/c4/01/c40167ee258efad76998aa40ee9fbd18_465x272.png) id如果相同可以認為是一組,從上往下順序執行. 在所有組中,id越大,優先級越高,越先執行. # select_type 查詢類型 區別: 普通查詢,聯合查詢,子查詢等復合查詢 **SIMPLE** 簡單的select查詢,查詢中不包含子查詢或者union **PRIMARY** 查詢中若包含任何復雜的子部分,最外層查詢則被標記為 **subquery** 在select或where列表中包含的子查詢 **derived** 在from列表中包含的子查詢被標記為derived(衍生). mysql會遞歸執行這些子查詢,把結果放到臨時表里面 **union** 若第二個select出現在union之后,則被標記為union. 若union包含在from子句的子查詢,外層select將被標記為derived **union result** 從union表獲取結果的select # table 這行數據是來自哪個表的 # type 訪問類型排列 顯示查詢使用了何種類型 從最好到最差依次是: `system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL` 一般來說,得保證到range級別,最好達到ref級別 * system: 表只有1行記錄(等于系統表),這是const類型的特例,平時不會出現,可以忽略 * const: 表示通過索引一次就找到了,const用于比較primarykey或者unique索引.因為只匹配一行數據,所以很快將主鍵置于where列表中,mysql就能將該查詢轉換為一個常量 * `eq_ref`: 唯一性掃描,對于每個索引鍵,表中只有一條記錄與之匹配.常見于主鍵或唯一索引掃描. ~~~ explain select * from t1, t2 where t1.id = t2.id ~~~ ![](https://img.kancloud.cn/43/88/4388cad945e5c4247ef1ec71968da702_647x157.png) * ref: 非唯一性索引掃描,返回匹配某個單獨值的所有行.本質上也是一種索引訪問,他返回所有匹配某個單獨值的行,然而他可能會找尋多個符合條件的行,所以他應該屬于查找和掃描混合體 * range: 只檢索給定范圍的行,使用一個索引來選擇行.key列顯示使用了那個索引.一般就是在你的where語句中出現了`between,<,>,in`等查詢.這種范圍掃描索引比全表掃描要好,因為它只需要開始于索引的某一點,而結束于另一個點,不用掃描全部索引 * index: `full index scan`,index與all區別為index類型只遍歷索引樹.這通常比all快,因為索引文件通常比數據文件還小.(也就是說雖然all和index都是讀全表,但是index是從索引讀取的,而all是從磁盤讀取的) * All: 全表掃描,`full table scan` # possible_keys 顯示可能應用在這張表中的索引,一個或多個. 查詢涉及到的字段若存在索引,則該索引將被列出,**但不一定被實際使用** # key 實際查詢使用的索引.如果為null,表示沒有使用索引. 查詢中若使用了覆蓋索引(select中和索引一樣),則該索引僅出現在key列表中 # key_len 表示索引中使用的字節數,可通過該列計算查詢中使用的索引的長度.在不損失精確性的情況下,長度越短越好. 顯示的值為索引字段的最大可能長度,**并非實際使用長度.** 是根據表定義計算而來的,不是通過表內檢索出的 ![](https://img.kancloud.cn/40/67/4067443cbcb9329f3b0e919c6dd4f7b5_1194x315.png) # ref 顯示索引的哪一列被使用了,如果可能的話是一個常數. 哪些列或常量被用于查找索引列上的值. ![](https://img.kancloud.cn/89/6b/896bd43774ca843eb3855fd2caaf2af1_931x218.png) # rows 根據表統計信息以及索引的選用情況,大致估算出找到所需記錄所需要讀取的行數 ![](https://img.kancloud.cn/59/ce/59ce10d05b14c30c18cc267aa578f38d_874x338.png) # Extra 包含不適合在其他列中顯示但是非常重要的額外信息 * Using filesort: 說明mysql會對數據使用一個外部的索引排序,而不是按照表內索引順序進行讀取.mysql中無法利用索引完成的排序操作稱為'文件排序' ![](https://img.kancloud.cn/1a/3f/1a3f07f5427e57906e97391998ab30d0_611x469.png) * Using temporary: 使用了臨時表保存中間結果,mysql在對查詢結果排序時使用臨時表.常見于排序`order by`和分組`group by` Mysql有一點很重要是會默認按照group by排序. 加order by null 這樣在group by的時候默認不排序,可以去掉filesort. ![](https://img.kancloud.cn/81/80/818079c794c8df9e400445f76921a2fa_663x462.png) * Using index: 表示相應的select操作中使用覆蓋索引,避免訪問了表的數據行,效率不錯.如果同時出現了using where,表明索引被用來執行索引鍵值的查找.如果沒有同時出現using where,表明索引用來讀取數據而非執行查找動作. ![](https://img.kancloud.cn/34/8d/348d8949d8ff4ff0f56253fdc5eff81e_863x400.png) * Using where: 使用了where過濾 * Using join buffer: 使用了連接緩存 * impossible where: where子句的值總是false,不能用來獲取任何元素, * `select tables optimized away`: 在沒有groupby子句的情況下,基于索引優化min/max操作或者對于myisam存儲引擎優化count(*)操作,不必等到執行階段再進行計算,查詢執行計劃生成的階段即完成優化 * distinct: 優化distinct操作,在找到第一匹配的元組后即停止找同樣值的動作
                  <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>

                              哎呀哎呀视频在线观看