I'm using sqlite 3.7.10 to collect a message log file--basically one table, 
with some metadata (timestamp and message type) plus a blob containing the raw 
message; we use this to play sessions back.
For one of the message types (video frames), the blob size is ~100K; for 
everything else, no more than a few hundred bytes.
During playback, there is a particular query that is very slow, and I don't 
understand why. Help?

This is fast:
SELECT Timestamp, MessageType, Topic, IsUDP, SourceAddress, SourcePort, 
DestAddress, DestPort, Message FROM Messages WHERE (messagetype = 'VideoFrame');
This is very slow:
SELECT Timestamp, MessageType, Topic, IsUDP, SourceAddress, SourcePort, 
DestAddress, DestPort, Message FROM Messages WHERE (messagetype = 'VideoFrame') 
order by timestamp;

Both the messagetype and timestamp fields are indexed.
If I use one of the message types that has small blobs, the query is almost 
instantaneous; similarly, if I select most of the message types, including 
'VideoFrame', the query is very fast. It's only when the query is limited to 
that one message type that it's slow, and then only if it's sorted. That is, if 
there is no WHERE clause, or if it's
WHERE (messagetype <> 'NAV')
or
WHERE (messagetype = 'NAV')
then the query is fast, regardless of sorting.

I have tried changing the page_size to higher values (up to 64K), and 
increasing the cache_size, but neither has any effect.

Thanks for any suggestions.
Tim Anderson
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to