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

SQL Server primærnøgle på datetime-feltet

Når du siger, at datoerne vil være unikke, mener du så du tænker vil de være unikke, eller deres unikke er garanteret af problemformuleringen? Efter min erfaring viser nogle ting sig at være en del mindre unikke, end man forestiller sig (amerikanske personnumre er et eksempel).

Hvis datoværdierne ikke er garanteret unikke, skal du tilføje heltalsnøglen.

Hvis datoværdierne er garanteret unikke, ændres de så? Hvis de ændrer sig, refereres de så af andre tabeller? Hvis begge svar er "ja", bør du sandsynligvis tilføje heltalsnøglen.

Hvis datoværdierne er garanteret unikke og ikke ændres eller ikke refereres til, kan du bruge dem til nøglen. Almindelige DATETIMEs er 8 bytes og standard INTEGER-værdier er 4 bytes, hvilket kan have en mindre effekt på indeksering. Hvis dine datoværdier kun er datoer, eller kun nøjagtige til minuttet eller mindre, og i det mere begrænsede interval, der tillades af typen, kan du bruge SMALLDATETIME og få disse indeksværdier ned til 4 bytes.



  1. SQL Server-tjektabel partitioneret

  2. Grundlæggende SQL-forespørgsler

  3. Returner sidst indsatte ID uden at bruge en anden forespørgsel

  4. Ændre grænse for Mysql rækkestørrelse for stor