> TabA.ID1
> TabA.ID2
> TabA.field1
>
> TabB.ID1
> TabB.ID2
> TabB.field2
> 
> TabC.ID1
> TabC.field3
> 
> ViewBC:
> SELECT * FROM TabB INNER JOIN TabC On TabB.ID1 = TabC.ID1
> 
> This is slow:
> SELECT field1, field2, field3 from TabA LEFT OUTER JOIN ViewBC ON TabA.ID1 =
> ViewBC.ID1 AND TabA.ID2 = ViewBC.ID2 
> 
> This is fast:
> SELECT field1, field2, field3 from TabA LEFT OUTER JOIN TabB ON TabA.ID1 =
> TabB.ID1 AND TabA.ID2 = TabB.ID2 INNER JOIN TabC ON TabB.ID1 = TabC.ID1

The second query may be faster, but the two queries are not equivalent.
Outer joins are not associative.

CREATE TABLE t1(a);
INSERT INTO t1 VALUES(1);
CREATE TABLE t2(b);
INSERT INTO t2 VALUES(2);
CREATE TABLE t3(c);
INSERT INTO t3 VALUES(2);
create view v1 as select b,c from t2 join t3 on b=c;

sqlite> select a,b,c from t1 left join v1 on a=b;
a           b           c         
----------  ----------  ----------
1           NULL        NULL      

sqlite> select a,b,c from t1 left join (t2 join t3 on b=c) on a=b;
a           b           c         
----------  ----------  ----------
1           NULL        NULL      

sqlite> select a,b,c from  t1 left join t2 on a=b  join t3 on b=c;

sqlite> select a,b,c from (t1 left join t2 on a=b) join t3 on b=c;




 
____________________________________________________________________________________
Need Mail bonding?
Go to the Yahoo! Mail Q&A for great tips from Yahoo! Answers users.
http://answers.yahoo.com/dir/?link=list&sid=396546091

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to