您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“MYSQL 8和MYSQL 5.7在復雜查詢中有哪些區(qū)別”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“MYSQL 8和MYSQL 5.7在復雜查詢中有哪些區(qū)別”這篇文章吧。
MySQL 8 最終是要大面積替換MYSQL5.7 , 之前的文字可能給人感覺MYSQL 8 還不如 MYSQL 5.7 ,實際上不然,任何東西新的一定有問題,解決解決就好了,在復雜查詢這塊 MYSQL 5.7 的確是和MYSQL 8 已經(jīng)有了分別,對于開發(fā)人員撰寫SQL 有什么幫助我們可以看看下面的一些例子。
下面是MYSQL 8 和 MYSQL 5.7 在一個稍微復雜查詢的執(zhí)行計劃
對比上面的圖,一樣的語句,一樣的數(shù)據(jù)庫,一樣的表,一樣的數(shù)據(jù)行數(shù)和內容,mysql 8 由于各種優(yōu)化,去掉了 using firesort,并且由于這一項,節(jié)省了近 20秒
下面還有相關的例子,還是出了MYSQL 版本不一致,包括硬件其他的都一樣的情況下,mysql 8 比 mysql 5.7 要快 4倍 34秒與128秒的區(qū)別,不同的還是那個 filesort
mysql 8.018
mysql 5.7.23
通過這兩個例子可以看到,在使用GROUP BY 這樣的語句,在沒有特殊優(yōu)化的情況下,,MYSQL 8 不在使用 FILESORT 排序后,速度有了大幅度的提升,這說明在沒有優(yōu)化的情況下,MYSQL 8 對于排序和GROUP BY 這樣的查詢時有利的,并且隨著提取的數(shù)據(jù)越多,則越快,這對 DEVELOPER 是一個好消息。
MYSQL 8
MySQL 5.7
上面的測試中,如果不帶有Join salaries 的情況下,實際情況是MYSQL 5,7 還會稍微的好一些,MYSQL 8 會將not exists not in 里面的子查詢先 Materialized 一下,相對來說,如果 not exists not in 里面的要排除的數(shù)據(jù)越少越好,條件越精準越好,這樣MYSQL 8 的 antijoin 的功能就會能幫助查詢更有效的排除數(shù)據(jù)。這里在所有都一樣的情況下,MYSQL 8 比 MYSQL 5.7 快 2倍的時間。
當然也有一些差強人意的,下面的兩個查詢時間上基本相同,可能需要更多的將語句重新格式的時間,mysql 8 還慢了0.2秒
MYSQL 8
總體來說mysql 在hash join , 免filesort 的新功能對大部分查詢語句是有幫助的,但實際上在測試中有些簡單的語句,MYSQL 8 并不能占據(jù)什么便宜,或者說還可能會比MYSQL 5.7 慢了“一眨眼” 的功夫。
以上是“MYSQL 8和MYSQL 5.7在復雜查詢中有哪些區(qū)別”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。