Tim Romano <tim.rom...@yahoo.com> wrote:
> I've read http://www.sqlite.org/optoverview.html but don't find my
> answer there.
> 
> In the following query, WOIDS has 4 million rows and CORNFIX has
> 25,000 rows.
> 
> UPDATE    WOIDS
> SET              corn = 1
> WHERE     EXISTS
> (
> SELECT     *
>  FROM          CORNFIX
>  WHERE      (cornfix.col_1 = woids.ttl) AND (cornfix.col_2 =
> woids.pos) AND (cornfix.col_3 = woids.wrdid)
> )

Try this instead:

update WOIDS set corn=1 where rowid in
(select w2.rowid
 from cornfix join woids w2 on (
    cornfix.col_1 = w2.ttl AND cornfix.col_2 = w2.pos AND cornfix.col_3 = 
w2.wrdid)
);

I'm not sure, but this structure might help SQLite choose cornfix for the outer 
loop.

Igor Tandetnik

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to