sql >> Databasteknik >  >> RDS >> Sqlserver

numeric(38,0) som primärnyckelkolumn; bra, dålig, vem bryr sig?

Tja, du är spendera mer data för att lagra siffror som du aldrig riktigt kommer att nå.

bigint går upp till 9 223 372 036 854 775 807 på 8 byte

int går upp till 2 147 483 647 på 4 byte

A NUMERIC(38,0) kommer att ta, om jag räknar rätt, 17 byte.

Ingen stor skillnad, men:mindre datatyper =fler rader i minnet (eller färre sidor för samma antal rader) =färre disk I/O att göra uppslagningar (antingen indexerade eller datasidasökningar). Gäller samma sak för replikering, loggsidor etc.

För SQL Server:INT är en IEEE-standard och är därför lättare för CPU:n att jämföra, så du får en liten prestandaökning genom att använda INT vs. NUMERIC (som är ett packat decimalformat). (Observera i Oracle, om den nuvarande versionen matchar de äldre versionerna jag växte upp på, är ALLA datatyper packade så en INT inuti är ungefär samma sak som en NUMERIC( x,0 ) så det finns ingen prestandaskillnad)

Så i det stora hela -- om du har mycket disk, RAM och extra I/O, använd vilken datatyp du vill. Om du vill få lite mer prestanda, var lite mer konservativ.

Annars vid det här laget skulle jag lämna det som det är. Inget behov av att ändra saker.



  1. Spåra PostgreSQL med perf

  2. MySQL-fråga med alias som inte använder ett index

  3. Låsa upp fördelarna med MariaDB:s Certified Associate Program

  4. Funktionella enheter