From: | Bruno Wolff III <bruno(at)wolff(dot)to> |
---|---|
To: | Gaetano Mendola <mendola(at)bigfoot(dot)com> |
Cc: | pgsql-admin(at)postgresql(dot)org |
Subject: | Re: Query optimization path |
Date: | 2003-01-12 17:01:08 |
Message-ID: | 20030112170108.GB31080@wolff.to |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
On Sun, Jan 12, 2003 at 17:31:34 +0100,
Gaetano Mendola <mendola(at)bigfoot(dot)com> wrote:
> Hi all,
>
> I have the following query:
>
> SELECT count(1)
> FROM providers p JOIN class_default cd USING (id_provider)
> JOIN user_data ud USING (id_class)
> JOIN v_user_traffic ut USING (id_user)
> WHERE id_user_status in (4,5) AND
> p.company = 'XXXXX';
>
> is not slow but I notice that if I do explain analyze with the table
> reordered
> inside the select in another way the cost change.
Using "JOIN" fixes the order that tables are joined in. If you are
just doing inner joins, then you probably don't want to use the "JOIN"
keyword. The exception being when there are so many tables being joined
that you want to manually specify at least some of the join ordering in
order to help out the planner.
Outer (and left and right) joins are generally not associative, so the
"JOIN" keyword being required for those cases isn't generally going to
be a problem.
From | Date | Subject | |
---|---|---|---|
Next Message | Gaetano Mendola | 2003-01-12 17:07:14 | Re: Query optimization path |
Previous Message | Peter Eisentraut | 2003-01-12 16:54:47 | Re: crypto? |