sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server primärnyckel i datetime-fältet

När du säger att datumen kommer att vara unika, menar du att du tänker kommer de att vara unika, eller garanteras deras unikhet av problemformuleringen? Enligt min erfarenhet visar sig vissa saker vara mycket mindre unika än man kan föreställa sig (amerikanska personnummer är ett exempel).

Om datumvärdena inte är garanterade unika bör du lägga till heltalsnyckeln.

Om datumvärdena garanteras unika, ändras de? Om de ändras, refereras de till av andra tabeller? Om båda svaren är "ja" bör du förmodligen lägga till heltalsnyckeln.

Om datumvärdena är garanterat unika och inte ändras eller inte hänvisas till kan du använda dem för nyckeln. Vanliga DATETIMEs är 8 byte och standardvärden för INTEGER är 4 byte, vilket kan ha en mindre effekt på indexeringen. Om dina datumvärden bara är datum, eller endast exakta till minuten eller mindre, och inom det mer begränsade intervallet som tillåts av typen, kan du använda SMALLDATETIME och få ner dessa indexvärden till 4 byte.



  1. InnoDB infogar mycket långsamt och saktar ner

  2. Varför är PHPs mysql_-funktioner utfasade?

  3. Val av senaste post från INNER JOIN och gruppering

  4. Hur man klona R12.2 miljö