Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Chiave primaria di SQL Server nel campo datetime

Quando dici che le date saranno uniche, intendi dire che pensa saranno unici, o la loro unicità è garantita dall'enunciazione del problema? Secondo la mia esperienza, alcune cose si rivelano molto meno uniche di quanto si possa immaginare (i numeri di previdenza sociale statunitensi sono un esempio).

Se i valori della data non sono garantiti univoci, dovresti aggiungere la chiave intera.

Se i valori di data sono garantiti univoci, cambiano? Se cambiano, sono referenziati da altre tabelle? Se entrambe le risposte sono "sì", probabilmente dovresti aggiungere la chiave intera.

Se i valori di data sono garantiti univoci e non cambiano o non sono referenziati, puoi usarli per la chiave. I DATETIME regolari sono 8 byte e i valori INTEGER standard sono 4 byte che potrebbero avere un effetto minore sull'indicizzazione. Se i tuoi valori di data sono solo date, o solo esatti al minuto o meno, e nell'intervallo più ristretto consentito dal tipo, puoi utilizzare SMALLDATETIME e ridurre i valori dell'indice a 4 byte.