--- Igor Tandetnik <[EMAIL PROTECTED]> wrote: > Joe Wilson <developir-/[EMAIL PROTECTED]> wrote: > > SELECT col2 FROM t > > WHERE +col1='foobar' AND col4='foobarfoobarfoobarfoob'; > > > > With the above where clause, > > the unique index (col4, col5, col1) will be used instead of > > the less efficient PRIMARY KEY(col1, col2, col3, col4, col5). > > Shouldn't the original query be able to use UNIQUE(col1, col4, col5) > index?
On my copy of 3.3.5+ it does not. CREATE TABLE t ( col1 text NOT NULL, col2 integer NOT NULL, col3 integer NOT NULL, col4 text NOT NULL, col5 text NOT NULL, PRIMARY KEY(col1, col2, col3, col4, col5) ); CREATE UNIQUE INDEX t145 on t (col1, col4, col5); CREATE UNIQUE INDEX t451 on t (col4, col5, col1); CREATE UNIQUE INDEX t541 on t (col5, col4, col1); sqlite> explain query plan SELECT col2 FROM t WHERE col1='foobar' AND col4='foobarfoobarfoobarfoob'; 0|0|TABLE t WITH INDEX sqlite_autoindex_t_1 sqlite> explain query plan SELECT col2 FROM t WHERE +col1='foobar' AND col4='foobarfoobarfoobarfoob'; 0|0|TABLE t WITH INDEX t451 The use of index t451 would make the query in question run quite fast given his data set. > > Igor Tandetnik > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com