On 2003-01-27, at 00.00, D. Richard Hipp wrote:
> Enterprise scale database engines do a more sophisticated job
> of selecting indices (when there is a choice like this) by
> collecting lots of statistics on the indices and using complex
> algorithms to make the choice. SQLite takes the easy way out
> and makes an arbitrary choice. With SQLite, it is up to you,
> the query author, to select an appropriate index when the choice
> of indices might make a difference. You can disable the other
> index by modifying the WHERE clause. To disable the I1A index,
> rewrite the WHERE clause like this:
>
> SELECT * FROM t1 WHERE a+0=5 AND b='xyzzy';
>
> To disable the I1B index you could write
>
> SELECT * FROM t1 WHERE a=5 AND b LIKE 'xyzzy';
>
> I should probably write some documentation talking about this
> and put it on the website....
This statement to disable I1B, however, is not likely exactly correct since
(according to the docs) LIKE is case- *insensitive*, so it would match 'XYZZY'
and 'XyZzY' as well (but not 'PLUGH' or 'PLOVER' :-). Using GLOB instead of
LIKE should work as intended:
SELECT * FROM t1 WHERE a=5 AND b GLOB 'xyzzy';
Derrell
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]