Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

numeric(38,0) като колона с първичен ключ; добро, лошо, на кого му пука?

Е, ти си изразходване на повече данни за съхраняване на числа, които никога няма да достигнете.

bigint достига до 9,223,372,036,854,775,807 в 8 байта

int достига до 2 147 483 647 в 4 байта

NUMERIC(38,0) ще отнеме, ако правя правилната математика, 17 байта.

Не е огромна разлика, но:по-малки типове данни =повече редове в паметта (или по-малко страници за същия брой редове) =по-малко дискови I/O за извършване на търсения (или индексирани, или търсене на страница с данни). Същото важи и за репликация, регистрационни страници и т.н.

За SQL Server:INT е стандарт на IEEE и е по-лесен за сравнение от процесора, така че получавате леко увеличение на производителността, като използвате INT срещу NUMERIC (който е пакетиран десетичен формат). (Забележете, че в Oracle, ако текущата версия съвпада с по-старите версии, на които съм израснал, ВСИЧКИ типове данни са пакетирани, така че INT вътре е почти същото нещо като NUMERIC( x,0), така че няма разлика в производителността)

И така, в голямата схема на нещата -- ако имате много диск, RAM и резервен I/O, използвайте какъвто тип данни искате. Ако искате да получите малко повече производителност, бъдете малко по-консервативни.

В противен случай на този етап бих го оставил както е. Няма нужда да променяте нещата.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Копиране на резултати от заявка на SQL Server в таблица на Access 2010

  2. Как да получите експортиран изход в реален CSV формат в SQL Server Management Studio?

  3. Обосновка за редовно обслужване на SQL сървър

  4. Не може да се свърже със сървъра - грешка, свързана с мрежата или специфична за екземпляр

  5. Уебинар:Проследяване на напредъка на заявките в SQL Server