私は、以下がアプリケーションの待ち時間を短縮するための十分に文書化されたパターン (またはそのことについてはアンチパターン) であるかどうかを見つけようとしています。私はこの手法を試してみましたが、これによりレイテンシが 20% 短縮されたように見えます。知っておくべき副作用があるかどうか知りたい
環境:
データベースに対して複数の SELECT 呼び出しを行うメソッド/関数/手順があり、それを最適化する必要があります。
メソッドの流れは次のとおりです。
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 を使用してデータベースを 1 回呼び出す
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-----