Mysql
 sql >> Database >  >> RDS >> Mysql

Perché non utilizzare il tempo di creazione di un record come chiave primaria?

La risposta generale è che i tuoi dati potrebbero cambiare (dove un ID insignificante non cambierà mai) ... cosa succede quando ti rendi conto che stai memorizzando il tempo nella zona locale e l'ora legale entra in gioco? Se desideri archiviare in UTC e/o in un fuso orario specifico? Per ulteriori considerazioni sugli ordini, vedere risposta di wcoenen .

Se inizi a creare migliaia di righe al secondo e devi pasticciare con i dati per "farli funzionare" facendo qualcosa per cui non era destinato. Forse aggiungeresti una colonna di disambiguazione che renderebbe il tuo indice più grande e più lento ...

E poi quando il tuo progetto diventa molto popolare e le persone iniziano a provare a eseguire report/query e "sta usando una data come PK???!!!"

Considera anche l'utilizzo di un database che consenta indici cluster su colonne non primarie.