← Tutti gli articoli

UUID vs ID autoincrementale: quale usare nel tuo database

23 giugno 2026 · Lettura 4 min

Una delle decisioni più importanti nella progettazione di un database è la scelta della chiave primaria. Le due opzioni principali sono ID autoincrementali (1, 2, 3...) e UUID (stringhe univoche come 550e8400-e29b-41d4-a716-446655440000). Vediamo pro e contro di ciascuno.

ID autoincrementali: semplici e compatti

Sono il default di MySQL, PostgreSQL, SQLite. Il database assegna automaticamente il prossimo numero.

  • Pro: compatti (4 o 8 byte), veloci da indicizzare, leggibili, occupano meno spazio.
  • Contro: rivelano il numero di record (concorrenza!), non sicuri in URL pubblici (es. /order/42 rivela che hai 42 ordini), difficili da sincronizzare tra database distribuiti.

UUID: univoci senza coordinazione

Gli UUID sono stringhe di 128 bit generate localmente, senza bisogno di un'autorità centrale. Anche due server che generano UUID contemporaneamente non avranno collisioni.

  • Pro: univoci senza coordinazione, sicuri in URL pubblici, ideali per sistemi distribuiti, microservizi e sincronizzazione offline-first.
  • Contro: più grandi (16 byte o 36 caratteri), meno efficienti in indice (random order = index fragmentation), meno leggibili per debugging.

UUID v4 vs v7: una differenza importante

UUID v4 è completamente random: perfetto per unicità ma pessimo per indici B-tree (ogni insert va in posizione casuale dell'indice = fragmentation).

UUID v7, introdotto recentemente, include un timestamp Unix nei primi 48 bit. Risultato: UUID generati in momenti vicini sono anche vicini nell'ordinamento. Questo risolve il problema della fragmentation dell'indice, rendendoli quasi efficienti quanto gli autoincrement, mantenendo il vantaggio dell'unicità distribuita.

Quando usare cosa

  • App monolitica semplice, single-DB: autoincrement va benissimo.
  • API pubblica dove l'ID è visibile in URL: UUID (evita enumeration attack).
  • Microservizi / multi-DB / offline-first: UUID obbligatorio.
  • Sistemi nuovi ad alto traffico: UUID v7 (unicità + buone performance di indice).
  • Sistemi legacy ad alto traffico: mantieni autoincrement, non migrare solo per moda.

In breve

Per la maggior parte dei progetti nuovi, UUID v7 è la scelta più bilanciata: univoco, distribuito, e con performance di indicizzazione accettabili. Per sistemi semplici e locali, l'autoincrement resta un'ottima scelta, più compatta ed efficiente.

Genera UUID v4 o v7 per il tuo progetto con il nostro Generatore UUID gratis. Fino a 100 per volta, con o senza trattini.
ToolHub — Pubblicato da ToolHub, la raccolta di utility web gratis.