6 de junio de 2026
3 min lectura
Usar UUID como clave primaria en SQLite duplica el tiempo de consulta y triplica el espacio. La alternativa ordenada que no sacrifica escalabilidad.
Un UUID de 128 bits almacenado como texto ocupa 36 bytes. Un entero de 64 bits, solo 8. En SQLite, esa diferencia se traduce en un 200% más de tiempo de consulta y un 300% más de espacio en disco, según benchmarks recientes.
Cada milisegundo cuenta cuando tu app crece. En una tabla con 10 millones de filas, un índice sobre UUIDs ocupa ~360 MB contra ~80 MB de un entero. La fragmentación del índice B-tree por la aleatoriedad de los UUIDs ralentiza aún más las inserciones y búsquedas.
Para el desarrollador minimalista, elegir el tipo de clave correcto es una decisión de arquitectura que impacta el rendimiento y la simplicidad del sistema. No se trata solo de evitar colisiones, sino de no pagar un costo oculto por una funcionalidad que quizá no necesitas.
INTEGER PRIMARY KEY con autoincremento, que es la opción más rápida. Para evitar colisiones en sistemas distribuidos, se recomienda usar UUIDs ordenados (tipo 1 o 7) o secuencias personalizadas.rowid entero como clave primaria interna, con el UUID como clave secundaria única.EXPLAIN QUERY PLAN y monitorea el tamaño de la base de datos. Si el rendimiento es aceptable, no cambies nada.INTEGER PRIMARY KEY interno para joins y relaciones, y un campo uuid único con índice para consultas externas. Así obtienes lo mejor de ambos mundos.“En SQLite, un UUID como clave primaria duplica el tiempo de consulta y triplica el espacio en disco frente a un entero de 64 bits.