sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server BIGINT eller DECIMAL(18,0) för primärnyckel

Du får det här intervallet med bigint:

-2^63 to 2^63-1 

also known as roughly:

-9.2 x 10^18 to 9.2 x 10^18

Du får det här intervallet med decimal(18,0) :

-10^18 to 10^18

Decimal:Lagringsbyte per precision

Precision    Storage Bytes
1-9:         5
10-19:       9
20-28:       13
29-38:       17

Heltalstyper och lagringsbyte

integer type    Storage Bytes
bigint          8
int             4
smallint        2
tinyint         1

Tankar

De två exemplen i din fråga ger faktiskt nästan samma mängd unika värden.

Dessutom kommer du inte att se en betydande prestandaförändring oavsett ditt val, men du kommer att se en förändring i effektivitet för andra programmerare i teamet om du börjar använda decimaler där programmerare förväntar sig ett heltal. Detta är en liten punkt.

För att lösa ditt specifika problem, om du vill ha ett större intervall, använd Decimal(38,0). Detta ger dig:

-10^38 to 10^38

Om du är orolig över hastigheten, använd den minsta precision som kommer att hålla hela din programvaras livstid.

Om du inte mäter tid i nano-sekunder, välj sedan det alternativ som passar bäst för dina programmerares tankesätt och din önskan att ha en mycket lång uppsättning siffror.

Referenser



  1. Khmer Unicode, engelska och Microsoft SQL Server 2008 resulterar i frågetecken

  2. Hur man omdirigerar stdout från docker-container till värd

  3. Skapa en SQL Server-databas med SQLOPS

  4. Bästa sättet att stoppa en enda person från att skapa flera konton