On Fri, Sep 14, 2007 at 01:33:51AM -0700, Jeremy Cole wrote:
> Hi Shawn, Lucio,
> 
> >SELECT STRAIGHT_JOIN ....
> >FROM ...
> >LEFT JOIN ...
> >WHERE ...
> >...
> 
> Just to correct a point here... if a query uses only LEFT JOIN or RIGHT 
> JOIN, the join order is fixed by the query's order itself, so using 
> STRAIGHT_JOIN should have no effect whatsoever.

True, because you say "only" left or right joins.

> Equally important, since the join order is fixed when you use LEFT
> JOIN, you *must* list the joins in the correct order when writing
> the query, otherwise you will see very poor performance.

"Only" is missing from here, which could be misleading.  MySQL will
reorder the t0, t1 and t2 joins in:

        select  ...
        from    t0
                        join t1 on ...
                        join t2 on ...
                        left join t3 on ...
        where   ...

> MySQL's optimizer cannot reorder the joins because it has the potential 
> to change the result of the query.

Do have an example in mind?

Thanks,

--Pete

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to