Você obtém esse intervalo com bigint:
-2^63 to 2^63-1
also known as roughly:
-9.2 x 10^18 to 9.2 x 10^18
Você obtém esse intervalo com decimal(18,0) :
-10^18 to 10^18
Decimal:bytes de armazenamento por precisão
Precision Storage Bytes
1-9: 5
10-19: 9
20-28: 13
29-38: 17
Tipos de inteiros e bytes de armazenamento
integer type Storage Bytes
bigint 8
int 4
smallint 2
tinyint 1
Pensamentos
Os dois exemplos postados em sua pergunta realmente produzem praticamente a mesma quantidade de valores exclusivos.
Além disso, você não verá uma mudança significativa no desempenho, independentemente de sua escolha, mas verá uma mudança na eficiência de outros programadores da equipe se começar a usar decimais onde os programadores esperam um número inteiro. Este é um ponto menor.
Para resolver seu problema específico, se desejar um intervalo maior, use Decimal(38,0). Isso lhe dá:
-10^38 to 10^38
Se você estiver preocupado com a velocidade, use a precisão mínima que durará a vida útil do seu software.
Se você não estiver medindo o tempo em nanossegundos, escolha a opção que melhor se adapta à mentalidade de seus programadores e ao seu desejo de ter um conjunto muito longo de números.
Referências