Note that there are some explanatory texts on larger screens.

plurals
  1. POSqlite Query Optimization (select * from where in AND not in order by limit offset)
    primarykey
    data
    text
    <p>Any ideas for optimizing the following query using Sqlite3?</p> <pre><code>SELECT * FROM Feed WHERE ActivityType IN ('PhotoActivity','CommentActivity') AND UserKey NOT IN ('testUser', 'testUser2') ORDER BY TimeStamp DESC LIMIT 20 OFFSET 0; </code></pre> <p>The table will never have over 100,000 records and we expect 100 to 1 reads to writes.</p> <p>Any help is greatly appreciated.</p> <p>Table Sql is:</p> <pre><code>CREATE TABLE Feed ( FeedActivityKey TEXT PRIMARY KEY, UserKey TEXT, AssemblyQualifiedName TEXT, SerializedObject BLOB, ActivityType TEXT, CorrelatedKey TEXT, TimeStamp INTEGER); CREATE INDEX Feed_ActivityTypeUserKey ON [FriendFeed] ( [ActivityType], [UserKey] DESC); CREATE INDEX Feed_UserKey ON [FriendFeed] ( [UserKey] DESC); CREATE INDEX Feed_TimeStamp ON [FriendFeed] ( [TimeStamp] DESC); </code></pre> <p>Explain Output is:</p> <p> 0 Trace 0 0 0 0 </p> <p> 1 OpenEphemeral 1 3 0 keyinfo(1,-BINARY) 0 </p> <p> 2 Integer 20 1 0 0 </p> <p> 3 MustBeInt 1 0 0 0 </p> <p> 4 IfZero 1 73 0 0 </p> <p> 5 Integer 0 2 0 0 </p> <p> 6 MustBeInt 2 0 0 0 </p> <p> 7 IfPos 2 9 0 0 </p> <p> 8 Integer 0 2 0 0 </p> <p> 9 Add 1 2 3 0 </p> <p> 10 IfPos 1 12 0 0 </p> <p> 11 Integer -1 3 0 0 </p> <p> 12 String8 0 4 0 PhotoActivity 0 </p> <p> 13 String8 0 5 0 CommentActivity 0 </p> <p> 14 Goto 0 74 0 0 </p> <p> 15 OpenRead 0 2 0 7 0 </p> <p> 16 OpenRead 2 4 0 keyinfo(2,BINARY,BINARY) 0 </p> <p> 17 If 7 25 0 0 </p> <p> 18 Integer 1 7 0 0 </p> <p> 19 OpenEphemeral 4 1 0 keyinfo(1,BINARY) 0 </p> <p> 20 Null 0 9 0 0 </p> <p> 21 MakeRecord 4 1 9 a 0 </p> <p> 22 IdxInsert 4 9 0 0 </p> <p> 23 MakeRecord 5 1 9 a 0 </p> <p> 24 IdxInsert 4 9 0 0 </p> <p> 25 Rewind 4 53 0 0 </p> <p> 26 Column 4 0 6 0 </p> <p> 27 IsNull 6 52 0 0 </p> <p> 28 Affinity 6 1 0 aab 0 </p> <p> 29 SeekGe 2 52 6 1 0 </p> <p> 30 IdxGE 2 52 6 1 1 </p> <p> 31 IdxRowid 2 9 0 0 </p> <p> 32 Seek 0 9 0 0 </p> <p> 33 Column 0 0 10 0 </p> <p> 34 Column 2 1 11 0 </p> <p> 35 Column 0 2 12 0 </p> <p> 36 Column 0 3 13 0 </p> <p> 37 Column 2 0 14 0 </p> <p> 38 Column 0 5 15 0 </p> <p> 39 Column 0 6 16 0 </p> <p> 40 MakeRecord 10 7 9 0 </p> <p> 41 Column 0 6 17 0 </p> <p> 42 Sequence 1 18 0 0 </p> <p> 43 Move 9 19 1 0 </p> <p> 44 MakeRecord 17 3 8 0 </p> <p> 45 IdxInsert 1 8 0 0 </p> <p> 46 IfZero 3 49 0 0 </p> <p> 47 AddImm 3 -1 0 0 </p> <p> 48 Goto 0 51 0 0 </p> <p> 49 Last 1 0 0 0 </p> <p> 50 Delete 1 0 0 0 </p> <p> 51 Next 2 30 0 0 </p> <p> 52 Next 4 26 0 0 </p> <p> 53 Close 0 0 0 0 </p> <p> 54 Close 2 0 0 0 </p> <p> 55 OpenPseudo 5 1 7 0 </p> <p> 56 Sort 1 72 0 0 </p> <p> 57 AddImm 2 -1 0 0 </p> <p> 58 IfNeg 2 60 0 0 </p> <p> 59 Goto 0 71 0 0 </p> <p> 60 Column 1 2 9 0 </p> <p> 61 Integer 1 8 0 0 </p> <p> 62 Insert 5 9 8 0 </p> <p> 63 Column 5 0 10 0 </p> <p> 64 Column 5 1 11 0 </p> <p> 65 Column 5 2 12 0 </p> <p> 66 Column 5 3 13 0 </p> <p> 67 Column 5 4 14 0 </p> <p> 68 Column 5 5 15 0 </p> <p> 69 Column 5 6 16 0 </p> <p> 70 ResultRow 10 7 0 0 </p> <p> 71 Next 1 57 0 0 </p> <p> 72 Close 5 0 0 0 </p> <p> 73 Halt 0 0 0 0 </p> <p> 74 Transaction 0 0 0 0 </p> <p> 75 VerifyCookie 0 5 0 0 </p> <p> 76 TableLock 0 2 0 FriendFeed 0 </p> <p> 77 Goto 0 15 0 0 </p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload