Eu tenho um aplicativo que usa uma tabela do PostgreSQL. A tabela é muito grande (bilhões de linhas) e possui uma coluna que é um número inteiro.
A integer
pode ser de até 6 dígitos, ou seja, não há 0-999,999 negativos.
Eu pensei em mudar para ser numeric(6,0)
.
Isso seria uma boa ideia? Iria numeric(6,0)
demorar menos bytes? E o desempenho (esta tabela está sendo consultada muito)?
postgresql
Ofiris
fonte
fonte
numeric
coluna paraint
?A resposta definitiva é não a todas as suas perguntas. Inteiro é sempre o caminho a percorrer para qualquer coisa que você possa usá-lo. (Dinheiro, por exemplo)
Pense sobre isso por um minuto. Quando o mecanismo de banco de dados encontra um número inteiro, ele lida com muita eficiência, porque não há muita interpretação para ele. É um número inteiro. O tipo numérico se comporta mais como uma string. O mecanismo primeiro precisa descobrir quais partes estão antes e depois do ponto decimal e massageá-las adequadamente para executar operações numéricas.
Usar um número inteiro sempre será mais eficiente que um numérico, embora tipos numéricos sejam frequentemente mais convenientes para humanos.
fonte
NUMERIC
. Um número inteiro escalado é muito melhor do que usar um valor de ponto flutuante por dinheiro.