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.phphttp://archives.postgresql.org/pgsql-performance/2007-12/msg00090.phphttp://archives.postgresql.org/pgsql-performance/2008-03/msg00361.php