需求描述
問題: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個執行緒來查詢,應該也就是一個執行緒序列執行吧。
解決:業務要想快,維護一個連線池,發兩個連線到服務端,客戶端再去做聚合。