Ron Mayer wrote:
> Bruce Momjian wrote:
> > Josh Berkus wrote:
> >> ...simple web applications, where
> >> queries are never supposed to take more than 50ms. If a query turns up
> >> with an estimated cost of 10000000000, then you know something's wrong;
> >> ...
> >
> > How about a simpler approach that throws an error or warning for
> > cartesian products? That seems fool-proof.
>
> Seems less fool-proof to me.
>
> Sometimes cartesian products produce plans that run 200 times
> faster than plans that don't use the cartesian product.
>
> The first link below shows a cartesian join that took 1.1
> seconds (within the range of OK for some web apps), while
> plans for the same query that don't use one took 200 seconds.
>
> http://archives.postgresql.org/pgsql-performance/2008-03/msg00391.php
> http://archives.postgresql.org/pgsql-performance/2007-12/msg00090.php
> http://archives.postgresql.org/pgsql-performance/2008-03/msg00361.php
My point is that people should _know_ they are using a cartesian
product, and a warning would do that for users who have no need for a
cartesian product and want to be warned about a possible error.
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +