UUID v4 o v7: quale usare e perché

Cosa cambia tra UUID v4 e UUID v7, perché v7 è più adatto come chiave primaria nei database e come generarli al volo, anche in blocco.

Aggiornata il 2 novembre 2026

La differenza in una riga

  • UUID v4: 122 bit completamente casuali. Nessun ordine.
  • UUID v7: i primi 48 bit sono il momento della creazione in millisecondi, il resto è casuale. Gli UUID creati dopo vengono ordinati dopo.

Puoi vederlo con il generatore di UUID: generane dieci in v7 e noterai che iniziano tutti con le stesse cifre.

Perché conta nei database

Gli indici dei database (B-tree in MySQL, PostgreSQL, SQLite) funzionano meglio quando i nuovi valori finiscono in fondo. Con v4 ogni nuova riga va in un punto casuale dell'indice: il database deve dividere pagine, scrivere di più e tenere in memoria tutto l'indice. Con v7 le nuove righe si accodano, come con un id numerico.

UUID v4 UUID v7
Ordinabile per data no sì
Prestazioni come chiave primaria peggiori su tabelle grandi simili a un id numerico
Rivela l'ora di creazione no sì
Supporto ovunque librerie recenti

Quale scegliere

  • Chiave primaria o id visibile negli URL: v7.
  • Token, identificativi che non devono rivelare nulla: v4.
  • Codici segreti o password: nessuno dei due. Usa una stringa casuale lunga, come quelle del generatore di password nella stessa pagina.

Generarli al volo

Il generatore crea fino a 500 UUID per volta, in minuscolo o maiuscolo, con il generatore crittografico del browser. Per leggere la data dentro un UUID v7, prendi le prime 12 cifre esadecimali, convertile in decimale e usa il convertitore di timestamp (sono millisecondi).

Domande frequenti

Due UUID possono essere uguali?

In teoria sì, in pratica no: un UUID v4 ha 122 bit casuali. Servirebbero miliardi di UUID al secondo per decenni prima di avere una probabilità apprezzabile di collisione.

Da un UUID v7 si può risalire alla data di creazione?

Sì, i primi 48 bit sono il timestamp in millisecondi. Se l'ora di creazione è un'informazione sensibile, usa v4.

Laravel e PostgreSQL supportano UUID v7?

Sì: nelle versioni recenti di Laravel il trait HasUuids genera UUID v7, e PostgreSQL 18 ha la funzione uuidv7(). Con versioni più vecchie si generano lato applicazione.

Potrebbe interessarti anche