The perils of UUID primary keys in SQLite
emschwartz
57 points
26 comments
June 05, 2026
Related Discussions
Found 5 related stories in 721.6ms across 14,736 title embeddings via pgvector HNSW
- SQLite in Production: Lessons from Running a Store on a Single File thunderbong · 27 pts · April 04, 2026 · 54% similar
- Prefer strict tables in SQLite ingve · 250 pts · July 11, 2026 · 53% similar
- Learning a few things about running SQLite surprisetalk · 206 pts · July 17, 2026 · 52% similar
- Modern SQLite: Features You Didn't Know It Had thunderbong · 197 pts · April 02, 2026 · 51% similar
- How to Corrupt an SQLite Database File tosh · 17 pts · June 26, 2026 · 49% similar
Discussion Highlights (6 comments)
yepyoukno
Perils of “UUIDv4”. Everyone knows that’s what UUIDv7 was really for, and you should always convert that to binary to optimize everything.
dumbledorf
Wait how is sqlite doing a million inserts a second?
blopker
UUIDs are way over used. There is almost always a better key to use, usually a bigint for databases. If you're making some kind of leaderless distributed data store, then maybe, but even then there are other ID sharding strategies I'd go for first depending on the constraints. For a single database, bigints are smaller and faster, with less footguns. UUIDs can be nice for an opaque public ID, however I'd still prefer something like a Sqid for space and usability.
w10-1
Isn't the solution just to use the rowid (after doing the read-id-after-insert dance)? How much trouble does SQLite reysing rowid's actually cause?
pyuser583
Oh gosh the ints v uuids debate for pks. This is worse than vim v eMacs or brackets v braces.
wood_spirit
If you need (or want the convenience of) a uuid and the time of creation is not secret then use ulids eg uuid v7.