"A. Pagaltzis" <[EMAIL PROTECTED]> wrote:
> * Brannon King <[EMAIL PROTECTED]> [2006-05-26 21:35]:
> > I would think this would be a valuable optimization for Sqlite
> > to perform automatically. When it finds an OR operation, it
> > should look to see if duplicating the query and using the UNION
> > ALL compounder would allow it to use additional indexes and if
> > so then duplicate it.
>
> But it canât: using `UNION ALL` will return duplicates whereas
> using `OR` wonât, so you canât substitute the former for the
> latter.
>
The right way to do this query is:
SELECT * FROM vals2d WHERE rowid IN
(SELECT rowid FROM vals2d WHERE x=1
UNION ALL SELECT rowid FROM vals2d WHERE y=1);
I have been aware of the potential to do this kind
of optimization automatically for years. But to do
so would require a lot of code, and it does not
accomplish anything that you cannot already do
manually, and it just does not come up that often.
So I have decided to forego it for the time being.
--
D. Richard Hipp <[EMAIL PROTECTED]>