Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server BIGINT atau DECIMAL (18,0) untuk kunci utama

Anda mendapatkan rentang ini dengan bigint:

-2^63 to 2^63-1 

also known as roughly:

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

Anda mendapatkan rentang ini dengan desimal(18,0) :

-10^18 to 10^18

Desimal:Byte Penyimpanan per Presisi

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

Jenis Bilangan Bulat dan Byte Penyimpanan

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

Pemikiran

Dua contoh yang diposting di Pertanyaan Anda sebenarnya menghasilkan jumlah nilai unik yang hampir sama.

Selain itu, Anda tidak akan melihat perubahan kinerja yang signifikan apa pun pilihan Anda, tetapi Anda akan melihat perubahan efisiensi untuk pemrogram lain di tim jika Anda mulai menggunakan desimal di mana pemrogram mengharapkan bilangan bulat. Ini adalah poin kecil.

Untuk mengatasi masalah spesifik Anda, jika Anda menginginkan rentang yang lebih besar, gunakan Desimal(38,0). Ini memberi Anda:

-10^38 to 10^38

Jika Anda mengkhawatirkan kecepatan, gunakan presisi minimum yang akan bertahan selama masa pakai perangkat lunak Anda.

Jika Anda tidak mengukur waktu dalam nano-detik, pilih opsi yang paling sesuai dengan pola pikir programmer dan keinginan Anda untuk memiliki rangkaian angka yang sangat panjang.

Referensi



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perintah Bersyarat SQL Server Oleh

  2. EAV melalui SQL Server

  3. Membungkus pernyataan SQL Server 2008 apa pun dengan operator lewati/ambil

  4. SQL Server - Tabel PIVOT Dinamis - Injeksi SQL

  5. Menggunakan Indeks di Tabel yang Dioptimalkan Memori SQL Server