[Dbix-class] Static / reference data
Andy Armstrong
andy at hexten.net
Wed Aug 22 19:22:56 GMT 2018
On 22 Aug 2018, at 19:50, Thomas Klausner <domm at cpan.org> wrote:
>
> Hi!
>
> On Wed, Aug 22, 2018 at 07:14:39PM +0100, Andy Armstrong wrote:
>
>> With DBIC every call to $prog->service->name results in a query
>> against services - so for a page of 20 search results that's 20
>> additional queries. Even on a single page it's often the case that
>> many of those queries are searching for the same service.
>
> Take a look at 'prefetch', which will fetch all of the data from the
> related table, so your search will be again one query only.
Thanks Thomas - that just about does it.
I should perhaps have mentioned that services may also do a self join to find a parent service - services are either one or two levels deep. I can make prefetch work for a single level service and I can make it work for two level services but not, as far as I can see, for both.
If I do prefetch => ['service', { service => 'parent' }] I only get results for the cases where the service hierarchy is two levels deep.
Having said that I inherited the self-join hierarchical service table - that could probably be refactored so that all services are a super-service - sub-service hierarchy which would, I think, solve the problem.
Thanks :)
--
Andy Armstrong, Hexten
More information about the DBIx-Class
mailing list