PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

A configuração NOT NULL em uma coluna no postgresql aumenta o desempenho?


Configurando NOT NULL não tem efeito per se no desempenho. Alguns ciclos para a verificação - irrelevante.

Mas você pode melhorar o desempenho usando NULLs em vez de valores fictícios. Dependendo dos tipos de dados, você pode economizar muito espaço em disco e RAM , acelerando assim .. tudo.

O bitmap nulo só é alocado se houver algum valor NULL na linha . É um bit para cada coluna na linha (NULL ou não). Para tabelas de até 8 colunas, o bitmap nulo é totalmente gratuito, usando um byte sobressalente entre o cabeçalho da tupla e os dados da linha. Depois disso, o espaço é alocado em múltiplos de MAXALIGN (tipicamente 8 bytes, cobrindo 64 colunas). A diferença é perdida para o preenchimento. Assim, você paga o preço total (baixo!) pelo primeiro valor NULL em cada linha . Valores NULL adicionais só podem economizar espaço.

O requisito mínimo de armazenamento para qualquer valor não nulo é de 1 byte (boolean , "char" , ...) ou normalmente muito mais, mais (possivelmente) preenchimento para alinhamento. Leia sobre tipos de dados ou verifique os detalhes sangrentos na tabela do sistema pg_type .

Mais sobre armazenamento nulo: