union的兩個子查詢是否並行

阿爾卑斯山發表於2019-01-17

需求描述

問題:subquery 1 union subquery2,其中union左右的兩個子查詢是否並行。

場景:業務中效能敏感的業務,希望能加快速度,如果資料庫能兩個子查詢並行執行,既可以節省時間,還可以節省網路開銷

測試結果

mysql> select version();
+---------------+
| version()     |
+---------------+
| 5.7.21-21-log |
+---------------+
1 row in set (0.00 sec)

mysql> select sleep(2) union select sleep(5);
+----------+
| sleep(2) |
+----------+
|        0 |
+----------+
1 row in set (7.01 sec)    -- 序列,妥了

分析:mysql是一個連線分配一個程式,這樣的一個SQL也不會分成2個執行緒來查詢,應該也就是一個執行緒序列執行吧。

解決:業務要想快,維護一個連線池,發兩個連線到服務端,客戶端再去做聚合。

相關文章