Я пытаюсь выяснить, является ли ниже хорошо документированный шаблон (или анти-шаблон в этом отношении) для снижения задержки приложения.Я попробовал эту технику, и на первый взгляд это спасает меня примерно на 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, чтобы сделать один вызов в базу данных
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-----