Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Chave primária do SQL Server no campo datetime


Quando você diz que as datas serão únicas, você quer dizer que pensa eles serão únicos, ou sua singularidade é garantida pelo enunciado do problema? Na minha experiência, algumas coisas acabam sendo bem menos exclusivas do que se imagina (os números da previdência social dos EUA são um exemplo).

Se os valores de data não forem garantidos como exclusivos, você deverá adicionar a chave de número inteiro.

Se os valores de data forem garantidos como exclusivos, eles mudam? Se eles mudarem, eles são referenciados por outras tabelas? Se ambas as respostas forem "sim", você provavelmente deve adicionar a chave inteira.

Se os valores de data forem garantidos como exclusivos e não forem alterados ou não forem referenciados, você poderá usá-los para a chave. DATETIMEs regulares são 8 bytes e valores INTEGER padrão são 4 bytes, o que pode ter um efeito menor na indexação. Se seus valores de data são apenas datas, ou apenas exatos ao minuto ou menos, e no intervalo mais restrito permitido pelo tipo, você pode usar SMALLDATETIME e reduzir esses valores de índice para 4 bytes.