Ukládáním dotazů do mezipaměti jsem měl na mysli CachedSqlEntityProcessor . Upřednostňuji sloučené řešení jako ve vaší další otázce Duplicitní položky MySQL GROUP_CONCAT . Ale CachedSqlEntityProcessor pomůže také, pokud se p_id opakuje znovu a znovu ve výsledkové sadě hlavního dotazu publication_authors , a budete mít méně starostí o využití paměti navíc.
Aktualizace:Zdá se, že máte vyřešeny dvě další otázky, pravděpodobně můžete jít oběma způsoby, stejně zveřejňuji krátký příklad/ukazatel, jak jste požadovali, pro případ, že by to ostatní považovali za užitečné
<entity name="x" query="select * from x">
<entity name="y" query="select * from y" processor="CachedSqlEntityProcessor" where="xid=x.id">
</entity>
<entity>
Tento příklad byl převzat z wiki . To bude stále spouštět každý dotaz „vyberte * z y, kde xid=id“ na id z hlavního dotazu „vyberte * z x“. Ale nebude posílat stejný dotaz opakovaně.