SQlite, Android, true story. I have a table, which I use as a cache:
CREATE TABLE cache(key TEXT, ts TIMESTAMP, size INTEGER, data BLOB);
CREATE UNIQUE INDEX
Apparently, what is slow is not finding the records to be deleted, but the actual deletion itself.
Check if PRAGMA secure_delete is set by default in your Android's SQLite. You should just disable it, just to be sure.
You do not need to run VACUUM
; SQLite automatically resuses freed pages.
You need VACUUM
only if you actually know that the database will not grow again in size in the future.