>
> After much playing about, I have determined that it is necessary to violate
> the guidelines on not using INDEXED BY and NOT INDEXED in an attempt to
> optimise performance.


Although you're very determined about your conclusions, I saw a
misunderstanding about INDEXED BY in your statements.
The docs say "The INDEXED BY clause is *not* intended for use in tuning the
preformance of a query". From my point of you one should think about these
extensions as sqlite's sql equivalent of assertions from high-level
languages.

For example, a quick test.
I have a table Contacts with an index ids_Contacts using field CenterId.
If I try to execute

SELECT * FROM Contacts INDEXED BY idx_Contacts

sqlite says: "cannot use index: idx_Contacts".

Only when a change made adding explicit ORDER BY clause applied

SELECT * FROM Contacts INDEXED BY idx_Contacts ORDER BY CenterId

... the query executes successfully.

If I remove now INDEXED BY from the latter statement nothing will change in
how the query is executed, _only_ if someone excplicitely deletes the index
from the database.

So any of your statements that argues that adding or removing INDEXED BY
affects the way your queries is executed is have to be double checked.

If you're still sure that you found a major flaw in the most deployed sql
database in the world, please narrow your tests and conclusions to something
easier reproducible. Everyone understands that you're solving one particular
problem related to you, but if you find time to make things more simple, it
will be to everyone's benefit.

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

Reply via email to