sql >> Database >  >> RDS >> Sqlserver

Primaire sleutel van SQL Server op datetime-veld

Als je zegt dat de datums uniek zullen zijn, bedoel je dan dat je denkt zullen ze uniek zijn, of wordt hun uniciteit gegarandeerd door de probleemstelling? In mijn ervaring blijken sommige dingen een stuk minder uniek te zijn dan men denkt (Amerikaanse burgerservicenummers zijn een voorbeeld).

Als de datumwaarden niet gegarandeerd uniek zijn, moet u de integer-sleutel toevoegen.

Als de datumwaarden gegarandeerd uniek zijn, veranderen ze dan? Als ze veranderen, wordt er dan naar verwezen door andere tabellen? Als beide antwoorden "ja" zijn, moet u waarschijnlijk de integer-sleutel toevoegen.

Als de datumwaarden gegarandeerd uniek zijn en niet veranderen of er niet naar wordt verwezen, kunt u ze gebruiken voor de sleutel. Normale DATETIME's zijn 8 bytes en standaard INTEGER-waarden zijn 4 bytes, wat een klein effect kan hebben op de indexering. Als uw datumwaarden alleen datums zijn, of alleen tot op de minuut nauwkeurig of minder, en binnen het beperktere bereik dat door het type is toegestaan, kunt u SMALLDATETIME gebruiken en die indexwaarden terugbrengen tot 4 bytes.



  1. Postgres gematerialiseerd pad - Wat zijn de voordelen van het gebruik van ltree?

  2. Wat kan ik doen om de prestaties van mijn pure door de gebruiker gedefinieerde functie in SQL Server te verbeteren?

  3. Gebruik PostgreSQL SSL-verbinding in roest met zelfondertekende certificaten

  4. Hoe kan ik het MySQL-enginetype voor een specifieke tabel controleren?