Cóż, jesteś wydawanie większej ilości danych na przechowywanie numerów, do których tak naprawdę nigdy nie dotrzesz.
bigint wzrasta do 9 223 372 036 854 775 807 w 8 bajtach
int wzrasta do 2.147.483.647 w 4 bajtach
LICZBA(38,0) zajmie, jeśli dobrze robię matematykę, 17 bajtów.
Nie jest to duża różnica, ale:mniejsze typy danych =więcej wierszy w pamięci (lub mniej stron dla tej samej liczby wierszy) =mniej dyskowych operacji we/wy w celu wyszukiwania (indeksowane lub wyszukiwanie stron danych). To samo dotyczy replikacji, stron dziennika itp.
W przypadku SQL Server:INT jest standardem IEEE, a więc jest łatwiejszy do porównania dla procesora, więc uzyskujesz niewielki wzrost wydajności, używając INT vs. NUMERIC (który jest upakowanym formatem dziesiętnym). (Uwaga w Oracle, jeśli bieżąca wersja pasuje do starszych wersji, na których dorastałem, WSZYSTKIE typy danych są pakowane, więc INT w środku jest prawie tym samym, co NUMERIC(x,0), więc nie ma różnicy w wydajności)
Tak więc, w ogólnym schemacie rzeczy -- jeśli masz dużo dysku, pamięci RAM i zapasowego I/O, użyj dowolnego typu danych. Jeśli chcesz uzyskać nieco większą wydajność, bądź bardziej konserwatywny.
W przeciwnym razie w tym momencie zostawiłbym to tak, jak jest. Nie trzeba nic zmieniać.