需求描述 問題:subquery 1 union subquery2,其中union左右的兩個子查詢是否並行。 場景:業務中性能敏感的業務,希望能加快速度,如果資料庫能兩個子查詢並行執行,既可以節省時間,還可以節省網路開銷 測試結果 分析:mysql是一個連接分配一個進程,這樣的一個SQL也不會分成 ...
需求描述
問題: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個線程來查詢,應該也就是一個線程串列執行吧。
解決:業務要想快,維護一個連接池,發兩個連接到服務端,客戶端再去做聚合。