Ofer Sadgat wrote:
> Why is SQLite refusing to use available indexes when adding a JOIN?
>
> CREATE VIEW baz AS SELECT id FROM foo UNION ALL SELECT id FROM bar;
>
> SELECT * FROM baz LEFT JOIN bam ON baz.id=bam.id WHERE baz.id IN ('123', 
> '234');

In the current SQLite version, the compound query using UNION ALL
confuses the query optimizer.

> SQL Fiddle: http://sqlfiddle.com/#!7/32af2/14 (use WebSQL)

WebSQL uses whatever random SQLite version your browser has.
With SQL.js (using SQLite 3.7.17), the indexes _are_ used.


The following query would use the indexes in any version:
  SELECT foo.id FROM foo LEFT JOIN ...
  UNION ALL
  SELECT bar.id FROM bar LEFT JOIN ...;


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

Reply via email to