溫馨提示×

溫馨提示×

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

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

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

發(fā)布時間:2021-10-25 10:28:57 來源:億速云 閱讀:441 作者:柒染 欄目:大數據

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

最近公司的系統(tǒng)一點點的開始了拆分,從ORACLE 轉移到 MYSQL 中,部分程序員的想法在使用MYSQL中還是沒有轉變過來,直接將ORALCE中的查詢語句直接搬到了MYSQL。使用MYSQL 重要的兩點,1 邏輯上移,數據庫不在是承擔你邏輯的第一選擇,程序的比重將變得更重要 2 數據庫容器化,數據庫將變得不再那么重要,而是僅僅是承載數據的地方,或者甚至高級的設計,數據庫將變得可有可無,這當然也的和業(yè)務掛鉤,不是放之四海都OK。

這就直接拋出一個問題,就是MYSQL的查詢技巧還重要嗎?當然如果你還要用MYSQL 來進行數據庫的提取和查詢,那就必須重視MYSQL的查詢技巧。

下圖是以 mysql 8.015 這個版本作為語句執(zhí)行的基礎

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

其實兩條語句查詢的結果是一樣的,僅僅是寫法不一樣,給出的執(zhí)行計劃就是不一樣的

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

以目前最新版本的MYSQL來說,從上面的例子里面,還是要鼓勵直接查詢,盡量避免子查詢。當然如果子查詢能大幅度的降低參與計算的數據量,則還是可以對比繼續(xù)使用的。

下面我們可以看看MYSQL 中的index merge 的功能到底能提升查詢性能多少

1 我們先關閉index_merge 

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

很明顯,索引都白搭了

2 我們打開index_merge 

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

明顯看到,查詢中使用or 的時候index merge 對數據查詢的幫助是很大的

實際當中,(SSD 硬盤 440行數據的 fetch 不開啟 0.195秒相當于全表掃描,開啟0.001秒)

mysql 8 是默認開啟的。

3  時間范圍對選擇索引的影響

下面兩條語句對于索引的選擇會截然不同,我們建立四個索引

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

Select * from employees where first_name ='Georgi' or last_name ='Preusig' and birth_date > '1950-01-01' and birth_date < '1950-01-02';

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

select * from employees where first_name ='Georgi' or last_name ='Preusig' and birth_date > '1950-01-01' ;

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

從上圖可以看出由于時間范圍,最后走了不同的索引,后面其實我還做了一些其他的測試,例如將時間的范圍擴大,發(fā)現目前的MYSQL 8.015 很聰明的走了應該走的索引,看了MYSQL8.0 這個版本的查詢優(yōu)化器要比MYSQL 5.7 進步不少。

最后,我們看看MYSQL 8.0的并行查詢,并行查詢,其實在 PG, SQL SERVER , ORACLE 中都有,但形式不同,MYSQL 8 之前是沒有并行查詢這個概念的,MYSQL 8 引入了并行查詢,我們看看到底并行查詢,對查詢有什么幫助。

MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢

首先我們將并行度降低到 1 ,默認是 4  查詢后,獲得的時間是 0.109秒 然后我們將并行度調整為 6 在次查詢,獲得的時間是 0.062秒

由此可見并行度這個東西,對于查詢是有幫助的,尤其count(*)  這樣經常被詬病的查詢方式也在并行度中獲益。

如果你經常觀察MYSQL 和 POSTGRESQL ,你就會感到開源數據庫越來越強大,留給ORACLE 和 SQL SERVER 這樣數據庫的時間其實不多了。

關于MYSQL中的查詢技巧及如何進行MYSQL 8 并行查詢問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

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

AI