sql >> Databáze >  >> RDS >> Sqlserver

SQL Server BIGINT nebo DECIMAL(18,0) pro primární klíč

Tento rozsah získáte pomocí bigint:

-2^63 to 2^63-1 

also known as roughly:

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

Tento rozsah získáte v desítkové soustavě (18,0) :

-10^18 to 10^18

Desetinné:Počet bajtů úložiště na přesnost

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

Typy celých čísel a bajty úložiště

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

Myšlenky

Dva příklady uvedené ve vaší otázce ve skutečnosti poskytují prakticky stejné množství jedinečných hodnot.

Také nezaznamenáte významnou změnu výkonu bez ohledu na vaši volbu, ale uvidíte změnu v efektivitě pro ostatní programátory v týmu, pokud začnete používat desetinná místa tam, kde programátoři očekávají celé číslo. Toto je menší bod.

Chcete-li vyřešit svůj konkrétní problém, pokud chcete větší rozsah, použijte Decimal(38,0). To vám dává:

-10^38 to 10^38

Pokud vám záleží na rychlosti, použijte minimální přesnost, která vydrží po celou dobu životnosti vašeho softwaru.

Pokud neměříte čas v nanosekundách, vyberte možnost, která bude nejlépe vyhovovat myšlení vašich programátorů a vaší touze mít velmi dlouhou sadu čísel.

Odkazy



  1. SQL Server 2008 – Pivot na jednom sloupci, seskupení do jiného, ​​udržení odkazu na třetí

  2. Je někdy volána metoda onUpgrade?

  3. Jak mohu vybrat pevný počet řádků pro každou skupinu?

  4. Selhání komunikačního spojení, Spring Boot + MySql + Docker + Hibernate