Won't work unfortunately. Currently indices are never used if the WHERE clause has an OR expression in it.
--- Aaron Burghardt <[EMAIL PROTECTED]> wrote: > Try adding another index: > > CREATE INDEX a_f1_f2 ON a (f1, f2); > > Does that help? > > Aaron Burghardt > > On Jul 11, 2005, at 6:07 AM, Ben Clewett wrote: > > > > Dear SQLite, > > > > I have found a possible area where the SQL logic of SQLite is not > > as good as other DBMS. Like MySQL or PostgreSQL. It's a simple > > thing, so I am showing it as a candidate for work. (If I could > > submit a patch I would :) > > > > If you create a table with two indexes: > > > > CREATE TABLE a ( > > f0 INTEGER PRIMARY KEY, > > f1 INTEGER, > > f2 INTEGER > > ); > > CREATE INDEX a_f1 ON a (f1); > > CREATE INDEX a_f2 ON a (f2); > > > > Now execute a query using both the indexes: > > > > SELECT * FROM a WHERE f1 = 1 OR f2 = 1; > > > > This query will not use the indexes. The query will increment > > through every row in the table. This is obviously very slow. > > > > As I mensioned, MySQL and PostgreSQL will use the indexes here, and > > therefore return the result considerably faster. > > > > I can use the 'UNION' to get the result I am after, so it's not a > > show stopper. > > > > I hope this is of interest to somebody. > > > > Regards, > > > > Ben Clewett. > > > > > > > > > > > > > > > ____________________________________________________ Sell on Yahoo! Auctions no fees. Bid on great items. http://auctions.yahoo.com/