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

numeric(38,0) som primær nøglekolonne; godt, dårligt, hvem bekymrer sig?

Nå, du er bruge flere data på at gemme tal, som du aldrig rigtig når.

bigint går op til 9.223.372.036.854.775.807 på 8 bytes

int går op til 2.147.483.647 på 4 bytes

A NUMERIC(38,0) vil tage 17 bytes, hvis jeg regner rigtigt ud.

Ikke en stor forskel, men:mindre datatyper =flere rækker i hukommelsen (eller færre sider for det samme antal rækker) =færre disk I/O til at lave opslag (enten indekseret eller datasidesøgninger). Gælder det samme for replikering, logsider osv.

For SQL Server:INT er en IEEE-standard og er derfor nemmere for CPU'en at sammenligne, så du får en lille ydelsesforøgelse ved at bruge INT vs. NUMERIC (som er et pakket decimalformat). (Bemærk i Oracle, hvis den nuværende version matcher de ældre versioner, jeg er vokset op med, er ALLE datatyper pakket, så en INT inde er stort set det samme som en NUMERIC( x,0 ), så der er ingen præstationsforskel)

Så i den store sammenhæng -- hvis du har masser af disk, RAM og ekstra I/O, så brug den datatype du ønsker. Hvis du vil have lidt mere ydeevne, så vær lidt mere konservativ.

Ellers ville jeg lade det være som det er på dette tidspunkt. Ingen grund til at ændre på tingene.



  1. Irriterende SQL-undtagelse, sandsynligvis på grund af forkert kode

  2. Rekursiv menu med php og MySQLi

  3. RPostgreSQL - R-forbindelse til Amazon Redshift - Sådan SKRIVER/Send større datasæt

  4. Kan ikke få adgang til midlertidige tabeller fra en funktion