Ícone do site Blog SQLCrespi

Sparse Columns

“Por que valores nulos ocupam espaço e como fazer para não ocupar?”

Primeiro, um valor nulo é um valor, não é a mesma coisa que um valor em branco.

Segundo, podemos otimizar o espaço utilizado pelas colunas de valores nulos utilizando a cláusula SPARSE, porém vale verificar se:

Esse recurso não pode ser utilizado nas condições abaixo:

Para fazer o teste criei duas tabelas com duas colunas, sendo que uma coluna de cada tabela aceita nulo e apenas a coluna da primeira tabela é criada com a opção sparse. Veja o script de criação abaixo:

CREATE table TesteE (
    cdteste int PRIMARY KEY ,
    nmteste char(200) SPARSE NULL)
GO
CREATE table TesteF (
    cdteste int PRIMARY KEY ,
    nmteste char(200)  NULL)

Agora para inserir dados utilizei o SQL Data Generator da RedGate para gerar uma carga de 100 registros na primeira tabela, sendo que na coluna sparse marquei 50% de campos nulos.

Para a carga da segunda tabela, foi feita uma importação da primeira tabela, isso para ter certeza que a quantidade de bytes na coluna alvo da pesquisa seria a mesma quantidade que a da primeira tabela.

Depois de verificar que ambas as tabelas possuem o mesmo conteúdo, podemos validar o espaço ocupado por cada tabela.

Como podemos visualizar na imagem, podemos concluir que tivemos vantagem com a coluna SPARSE otimizando o espaço.

Entretanto, recomendo uma análise muito criteriosa antes de utilizar esse recurso.

 Abraço, Rodrigo

Sair da versão mobile