6 comments

[ 3.1 ms ] story [ 21.3 ms ] thread
Neat optimization, I've never seen that before. Thanks for sharing.
It's not clear in the code how you're batching the writes. Could the performance improvement be mostly explained by batches?
Depending on the size of the blob you might not want to use `WITHOUT ROWID`. I had a similar table with uuid keys and blobs of 40kb size on average and `WITHOUT ROWID` really tanked performance.
This is not unique to SQLite... it should help with any database that uses B+Trees. Batch deletes are also typically faster when the IDs to be deleted are sorted in these same systems.