[Dbix-class] D::C generates unneccessary duplicate joins..

Jess Robinson castaway at desert-island.demon.co.uk
Thu Jul 6 14:49:12 CEST 2006



On Wed, 5 Jul 2006, Toby Corkindale wrote:

> Hi,
> I'm trying to work out how to optimise a query. D::C is generating twice as
> many joins as neccessary, which adds up to hurt performance in extended
> cases of the example I give below.
>
> An example query wants to select objects which have metadata.value=foo and
> metadata.value=bar.
>
> One method is to do this:
> Using a objects->search(
>    { metadata.value => foo, metadata_2.value => bar },
>    { join => [ { objmetadata => metadata }, {objmetadata => metadata } ] }
>    );
>

Well you asked it to. Shouldnt that be something like:

Using a objects->search(
    { metadata.value => foo, metadata_2.value => bar },
    { join => { objmetadata => ['metadata', 'metadata'] }
     );

??


Also, what a horrible wquery, why isnt that just:

.. WHERE metadata.value = foo OR metadata.value = bar

Using a objects->search(
    { metadata.value => ['foo', 'bar'] },
    { join => { objmetadata => 'metadata' }
     );

?

Jess





More information about the Dbix-class mailing list