On 13/11/2011 3:37 a.m., Igor Tandetnik wrote:
Josh Gibbs<jgi...@imailds.com>  wrote:
The timestamps are already integers.  We stumbled across that CAST operation
optimization purely by accident.  I don't remember what led to it, but
we found
that it gave a measurable performance boost casting the integer as an
integer.
This works by *suppressing* the index. When you are selecting a significant 
portion of all the records in the table, a linear scan works faster than an 
extra level of indirection through the index. But SQLite doesn't know 
beforehand how many records migh end up being retrieved, and calculates the 
query plan based largely on syntactical structure of the query (but see ANALYZE 
command).

You can make it

WHERE +messages.TimeStamp BETWEEN 0 AND 9999999999

The unary plus is a no-op except it prevents SQLite from using an index on the 
column.

Very interesting, thanks. I'd asked on the list about this when we first came across it but no one ever responded to the question.

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

Reply via email to