All you have changed is the declared type of the list_id column, which only defines the preferred type for storing values. You have not changed the format of the data you store there, which is quite obvious from the "list_id='3ef58f02-5f41-43b6-890d-091afb4738eb' part of the where clause. You also still do not have a usable index that includes list_id, which is obvious from the "USING INDEX idx_item_item_id_and_modified (item_id=? AND modified=?)" part of the query plan. See https://sqlite.org/datatype3.html for a discussion of data types in SQLite. This means you are still looking through all the records with item_id = 70 and modified at a certain time to find out if your target list is included.