[Dbix-class] Naming columns in nested joins
Matt S Trout
dbix-class at trout.me.uk
Wed May 24 16:59:22 CEST 2006
Brandon Black wrote:
> On 5/24/06, Matt S Trout <dbix-class at trout.me.uk> wrote:
>> The DBIC search syntax is effectively an SQL abstract syntax tree; if
>> you want to maintain total abstraction for client applications, adding
>> (and documenting :) a custom resultset class with additional search
>> methods that hide these implementation details is the way forwards.
>>
>
> I was thinking more about what you said the other day, re: creating
> views for all complex queries, and I think that bears on this as well.
> Perhaps anytime one finds oneself making a very complex query in raw
> SQL or as a hugely convoluted ->search(), it is best to go back to the
> DB level and CREATE VIEW with that query, and just have the view be
> another simple DBIC source that one can run simple queries on. Or at
> the very least, it's something to strongly consider in each such case.
>
> With some vendors/situations/queries, this may of course be suboptimal
> for performance, but it's cleaner, and in some cases probably actually
> faster (as I would imagine at least some of the vendors
> pre-parse/prepare/plan the select that makes up the view on the server
> side permanently).
Right. The knee point for this for DBIC tends to be further on than for
CDBI and RDBO because DBIx::Class supports rather more of SQL, but just
because you *can* do stuff in perl space doesn't mean it's a good idea;
sometimes it's better to just let the RDBMS do the Relational Management
bits (shockingly) and bolt your application code onto the front of that.
Something I'm very interested in doing once we have subselects is to
allow the specification of a subselect as a ResultSource, with a view
(oh gods) to being able to deploy it to the database if you've got one
that will support it and handle it perl-side if you haven't (though in a
few years once mysql <4 has been phased out of production it probably
won't matter so much *crosses fingers*)
More information about the Dbix-class
mailing list