我正在嘗試查找下面是否有詳細記錄的模式(或針對該問題的反模式)以減少應用程序延遲。我已經嘗試過這種技術,而且看起來這樣可以節省20%的延遲時間。我想知道是否有任何副作用會影響我應該知道的這是一個有據可查的模式嗎?
語境:
你已經有了一個方法/功能/過程,這使得對數據庫的多個選擇通話,你需要優化它。
可以說你的方法的流程是:
getDBConnection()
execute("Select a,b from tableA");
bind a with varA
bind b with varB
---SOME Business Logic-----
execute("Select c,d from tableB");
bind c with varC
bind d with varD
---SOME more Business Logic-----
execute("Select e,f from tableC");
bind e with varE
bind f with varF
---SOME more Business Logic-----
releaseConnection()
解決方案: 使用UNION ALL進行一個調用數據庫
getDBConnection()
execute("Select a,b,'sqlA' from tableA"+
" UNION ALL "+
" Select c,d,'sqlB' from tableB"+
" UNION ALL "+
"Select e,f,'sqlC' from tableC");
bind a,b where records have "sqlA"
bind c,d where records have "sqlB"
bind e,f where records have "sqlC"
releaseConnection()
--------Do all Business Logic here-----
+1「這種優化技術,不能一概而論不相干的操作,這將限制單個操作的可重用性以後」 –
接受了它的QueryManager部分 – rajeshnair