<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQL數據庫優化概述二_MySQL

        來源:懂視網 責編:小采 時間:2020-11-09 17:34:28
        文檔

        MySQL數據庫優化概述二_MySQL

        MySQL數據庫優化概述二_MySQL:EXPLAIN 語句可以被當作 DESCRIBE 的同義詞來用,也可以用來獲取一個MySQL要執行的 SELECT 語句的相關信息。EXPLAIN tbl_name 語法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name 一樣。 ref_or_null 這種連接類型類似 r
        推薦度:
        導讀MySQL數據庫優化概述二_MySQL:EXPLAIN 語句可以被當作 DESCRIBE 的同義詞來用,也可以用來獲取一個MySQL要執行的 SELECT 語句的相關信息。EXPLAIN tbl_name 語法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name 一樣。 ref_or_null 這種連接類型類似 r

          EXPLAIN 語句可以被當作 DESCRIBE 的同義詞來用,也可以用來獲取一個MySQL要執行的 SELECT 語句的相關信息。EXPLAIN tbl_name 語法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name 一樣。
          ref_or_null
          這種連接類型類似 ref,不同的是MySQL會在檢索的時候額外的搜索包含 NULL 值的記錄。這種連接類型的優化是從MySQL 4.1.1開始的,它經常用于子查詢。在以下的例子中,MySQL使用 ref_or_null 類型來處理 ref_table:


          SELECT * FROM ref_table
          WHERE key_column=expr OR key_column IS NULL;


          index_merge
          這種連接類型意味著使用了 Index Merge 優化方法。這種情況下,key字段包括了所有使用的索引,key_len 包括了使用的鍵的最長部分。詳情請看"7.2.5 How MySQL Optimizes OR Clauses"。

          unique_subquery
          這種類型用例如一下形式的 IN 子查詢來替換 ref:

          value IN (SELECT primary_key FROM single_table WHERE some_expr)

          unique_subquery 只是用來完全替換子查詢的索引查找函數效率更高了。

          index_subquery
          這種連接類型類似 unique_subquery。它用子查詢來代替 IN,不過它用于在子查詢中沒有唯一索引的情況下,例如以下形式:

          value IN (SELECT key_column FROM single_table WHERE some_expr)

          range
          只有在給定范圍的記錄才會被取出來,利用索引來取得一條記錄。key 字段表示使用了哪個索引。key_len 字段包括了使用的鍵的最長部分。這種類型時 ref 字段值是 NULL。range 用于將某個字段和一個定植用以下任何操作符比較時 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, 或 IN
         SELECT * FROM tbl_name
          WHERE key_column = 10;
          SELECT * FROM tbl_name
          WHERE key_column BETWEEN 10 and 20;
          SELECT * FROM tbl_name
          WHERE key_column IN (10,20,30);
          SELECT * FROM tbl_name
          WHERE key_part1= 10 AND key_part2 IN (10,20,30);

          index
          連接類型跟 ALL 一樣,不同的是它只掃描索引樹。它通常會比 ALL 快點,因為索引文件通常比數據文件小。MySQL在查詢的字段知識單獨的索引的一部分的情況下使用這種連接類型。

          ALL
          將對該表做全部掃描以和從前一個表中取得的記錄作聯合。這時候如果第一個表沒有被標識為 const 的話就不大好了,在其他情況下通常是非常糟糕的。正常地,可以通過增加索引使得能從表中更快的取得記錄以避免 ALL。

          possible_keys

          possible_keys 字段是指MySQL在搜索表記錄時可能使用哪個索引。注意,這個字段完全獨立于 EXPLAIN 顯示的表順序。這就意味著 possible_keys 里面所包含的索引可能在實際的使用中沒用到。如果這個字段的值是 NULL,就表示沒有索引被用到。這種情況下,就可以檢查 WHERE 子句中哪些字段那些字段適合增加索引以提高查詢的性能。就這樣,創建一下索引,然后再用 EXPLAIN 檢查一下。詳細的查看章節"14.2.2 ALTER TABLE Syntax"。想看表都有什么索引,可以通過 SHOW INDEX FROM tbl_name 來看。

          key

          key 字段顯示了MySQL實際上要用的索引。當沒有任何索引被用到的時候,這個字段的值就是 NULL。想要讓MySQL強行使用或者忽略在 possible_keys 字段中的索引列表,可以在查詢語句中使用關鍵字FORCE INDEX, USE INDEX, 或 IGNORE INDEX。如果是 MyISAM 和 BDB 類型表,可以使用 ANALYZE TABLE 來幫助分析使用使用哪個索引更好。如果是 MyISAM 類型表,運行命令 myisamchk --analyze 也是一樣的效果。詳細的可以查看章節"14.5.2.1 ANALYZE TABLE Syntax"和"5.7.2 Table Maintenance and Crash Recovery"。

          key_len

          key_len 字段顯示了MySQL使用索引的長度。當 key 字段的值為 NULL 時,索引的長度就是 NULL。注意,key_len 的值可以告訴你在聯合索引中MySQL會真正使用了哪些索引。

          ref

          ref 字段顯示了哪些字段或者常量被用來和 key 配合從表中查詢記錄出來
        rows

          rows 字段顯示了MySQL認為在查詢中應該檢索的記錄數。

          Extra

          本字段顯示了查詢中MySQL的附加信息。以下是這個字段的幾個不同值的解釋:

          Distinct

          MySQL當找到當前記錄的匹配聯合結果的第一條記錄之后,就不再搜索其他記錄了。

          Not exists

          MySQL在查詢時做一個 LEFT JOIN 優化時,當它在當前表中找到了和前一條記錄符合 LEFT JOIN 條件后,就不再搜索更多的記錄了。下面是一個這種類型的查詢例子:


          SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id
          WHERE t2.id IS NULL;


          假使 t2.id 定義為 NOT NULL。這種情況下,MySQL將會掃描表 t1 并且用 t1.id 的值在 t2 中查找記錄。當在 t2 中找到一條匹配的記錄時,這就意味著 t2.id 肯定不會都是 NULL,就不會再在 t2 中查找相同 id 值的其他記錄了。也可以這么說,對于 t1 中的每個記錄,MySQL只需要在 t2 中做一次查找,而不管在 t2 中實際有多少匹配的記錄。

          range checked for each record (index map: #)

          MySQL沒找到合適的可用的索引。取代的辦法是,對于前一個表的每一個行連接,它會做一個檢驗以決定該使用哪個索引(如果有的話),并且使用這個索引來從表里取得記錄。這個過程不會很快,但總比沒有任何索引時做表連接來得快。

          Using filesort

          MySQL需要額外的做一遍從而以排好的順序取得記錄。排序程序根據連接的類型遍歷所有的記錄,并且將所有符合 WHERE 條件的記錄的要排序的鍵和指向記錄的指針存儲起來。這些鍵已經排完序了,對應的記錄也會按照排好的順序取出來。詳情請看"7.2.9 How MySQL Optimizes ORDER BY"。

          Using index

          字段的信息直接從索引樹中的信息取得,而不再去掃描實際的記錄。這種策略用于查詢時的字段是一個獨立索引的一部分。

          Using temporary

          MySQL需要創建臨時表存儲結果以完成查詢。這種情況通常發生在查詢時包含了GROUP BY 和 ORDER BY 子句,它以不同的方式列出了各個字段

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQL數據庫優化概述二_MySQL

        MySQL數據庫優化概述二_MySQL:EXPLAIN 語句可以被當作 DESCRIBE 的同義詞來用,也可以用來獲取一個MySQL要執行的 SELECT 語句的相關信息。EXPLAIN tbl_name 語法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name 一樣。 ref_or_null 這種連接類型類似 r
        推薦度:
        標簽: 信息 數據庫 mysql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产成人亚洲合集青青草原精品| 亚洲男人的天堂在线播放| 中文字幕乱码亚洲无线三区 | 亚洲精品美女在线观看| 中文字幕av免费专区| 国产a v无码专区亚洲av| 一级片在线免费看| mm1313亚洲国产精品美女| 丰满少妇作爱视频免费观看| 亚洲欧洲中文日韩av乱码| 一个人看的在线免费视频| 国产亚洲福利精品一区| 性色午夜视频免费男人的天堂| 亚洲AV福利天堂一区二区三 | 日本一道高清不卡免费| 理论秋霞在线看免费| 国产亚洲AV手机在线观看| 久久久久成人片免费观看蜜芽| 亚洲激情电影在线| 在线播放免费人成视频在线观看| 国产精品亚洲专区一区| 国产亚洲3p无码一区二区| 亚洲网站在线免费观看| 亚洲AV无码国产精品色| 一本久到久久亚洲综合| 精品国产麻豆免费人成网站| 亚洲国产精品成人综合久久久| 免费精品一区二区三区在线观看 | 曰批全过程免费视频网址| 亚洲熟女乱色一区二区三区 | 免费黄网站在线看| 亚洲ts人妖网站| 高清在线亚洲精品国产二区| 永久免费不卡在线观看黄网站| 亚洲国产成人99精品激情在线| 亚洲国产精品专区在线观看| 6080午夜一级毛片免费看| 亚洲国产成人久久一区二区三区| 国产亚洲日韩一区二区三区| 波多野结衣在线免费观看| 久草免费福利在线|