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

溫馨提示×

溫馨提示×

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

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

MySQL查詢優化器的工作原理是什么

發布時間:2021-08-09 14:24:46 來源:億速云 閱讀:260 作者:chen 欄目:數據庫

本篇內容介紹了“MySQL查詢優化器的工作原理是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

  MySQL查詢優化器的工作原理是什么

  當然,MySQL查詢優化器也利用了索引,但是它也使用了其它一些信息。例如,如果你提交如下所示的查詢,那么無論數據表有多大,MySQL執行它的速度都會非常快:

  SELECT*FROMtbl_nameWHERE0;

  在這個例子中,MySQL查看WHERE子句,認識到沒有符合查詢條件的數據行,因此根本就不考慮搜索數據表。你可以通過提供一個EXPLAIN語句看到這種情況,這個語句讓MySQL顯示自己執行的但實際上沒有真正地執行的SELECT查詢的一些信息。如果要使用EXPLAIN,只需要在EXPLAIN單詞放在SELECT語句的前面:

  mysql>EXPLAINSELECT*FROMtbl_nameWHERE0\G***************************1.row***************************id:1select_type:SIMPLEtable:NULLtype:NULLpossible_keys:NULLkey:NULLkey_len:NULLref:NULLrows:NULLExtra:ImpossibleWHERE

  通常情況下,EXPLAIN返回的信息比上面的信息要多一些,還包括用于掃描數據表的索引、使用的聯結類型、每張數據表中估計需要檢查的數據行數量等非空(NULL)信息。

  MySQL查詢優化器是如何工作的

  MySQL查詢優化器有幾個目標,但是其中最主要的目標是盡可能地使用索引,并且使用最嚴格的索引來消除盡可能多的數據行。你的最終目標是提交SELECT語句查找數據行,而不是排除數據行。優化器試圖排除數據行的原因在于它排除數據行的速度越快,那么找到與條件匹配的數據行也就越快。如果能夠首先進行最嚴格的測試,查詢就可以執行地更快。假設你的查詢檢驗了兩個數據列,每個列上都有索引:

  SELECTcol3FROMmytableWHEREcol1=’somevalue’ANDcol2=’someothervalue’;

  假設col1上的測試匹配了900個數據行,col2上的測試匹配了300個數據行,而同時進行的測試只得到了30個數據行。先測試Col1會有900個數據行,需要檢查它們找到其中的30個與col2中的值匹配記錄,其中就有870次是失敗了。先測試col2會有300個數據行,需要檢查它們找到其中的30個與col1中的值匹配的記錄,只有270次是失敗的,因此需要的計算和磁盤I/O更少。其結果是,優化器會先測試col2,因為這樣做開銷更小。

  你可以通過下面一個指導幫助優化器更好地利用索引:

  盡量比較數據類型相同的數據列。當你在比較操作中使用索引數據列的時候,請使用數據類型相同的列。相同的數據類型比不同類型的性能要高一些。例如,INT與BIGINT是不同的。CHAR(10)被認為是CHAR(10)或VARCHAR(10),但是與CHAR(12)或VARCHAR(12)不同。如果你所比較的數據列的類型不同,那么可以使用ALTERTABLE來修改其中一個,使它們的類型相匹配。

“MySQL查詢優化器的工作原理是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

大厂| 馆陶县| 大足县| 云林县| 黎城县| 琼中| 清涧县| 宣汉县| 石狮市| 达拉特旗| 承德县| 林州市| 鞍山市| 元江| 江西省| 沿河| 句容市| 绵阳市| 乌鲁木齐县| 安乡县| 太白县| 曲周县| 武安市| 定襄县| 嘉善县| 颍上县| 五莲县| 临颍县| 石狮市| 姜堰市| 容城县| 永清县| 商南县| 彭山县| 儋州市| 漯河市| 潜山县| 社会| 绵竹市| 吉林省| 沽源县|