Neat optimization, I've never seen that before. Thanks for sharing.
gandreani · 2026-06-30 00:58:01 UTC
It's not clear in the code how you're batching the writes. Could the performance improvement be mostly explained by batches?
JSR_FDED · 2026-06-30 03:41:29 UTC
Looks like he’s doing 1M INSERTs per transaction.
In his 2nd example he’s doing the same thing, except he first sorts the data for each of those 1M INSERTs, leading to a 2-3x speedup.
Loranubi · 2026-06-30 01:58:47 UTC
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.
rented_mule · 2026-06-30 07:20:56 UTC
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.
Comments
In his 2nd example he’s doing the same thing, except he first sorts the data for each of those 1M INSERTs, leading to a 2-3x speedup.