Codificando .Net

Aprendizado, companherismo, ensino e aperfeiçoamento constante

SQL Server 2008: Utilizando colunas com SPARSE COLUMNS

Sempre venho imaginando que no nosso dia-a-dia existe sempre em nossos banco de dados uma grande quantidade de tabelas as quais possuem colunas com um percentual enorme de valores nulos, sendo assim alguns desses valores nulos não nos satisfazem ou até mesmo ocupam um grande volume determinado espaço na nossa tabela, mais seria excelente se tivéssemos alguma função ou algo relacionado a isso para que, quando tivermos valores nulos, não estariam ocupando nenhum byte no nosso banco, pois certa vez esses valores nulos seriam inúteis para nosso banco de dados. SQL Server 2008 introduziu uma excelente característica de armazenamento de dados relativo a qual pode reduzir o espaço armazenado em uma tabela populada. Você poderá utilizar a função sparse column quando você tiver em mente sabendo que seu banco de dados irá receber certa quantidade de valores nulos, no entanto sua aplicação será otimizada porque os valores nulos que estão localizados na tabela não irão ocupar nenhum espaço se quer.


Seria uma boa idéia saber como seria o funcionamento com relação ao espaço armazenado, algumas considerações que devemos ter em mente, por exemplo:

* Os valores NULL não ocuparam espaço quando for utilizado;

* Os valores NOT NULL requer um byte extra de espaço armazenado;

- Os tipos de tamanho fixos e precisões dependem de quatro bytes extras;

- Os tipos de tamanho variável requerem dois bytes extras.

Certa vez utilizar a função ‘sparse column’ não seria necessário se sua tabela a qual está trabalhando possuir uma pequena quantidade de valores nulos, seria uma boa idéia utilizarmos em uma tabela que possui uma grande quantidade de dados; só assim teremos um bom benefício relacionado á espaço armazenado.
Podemos olhar com freqüência a nossa tabela se possui uma grande quantidade de valores nulos, se a coluna a qual estiver armazenando os valores nulos possui um certo volume, você então poderá pensar em utilizar sparse column. Por exemplo, sempre quando executamos um SELECT em uma tabela poderíamos visualizar seria a coluna que possui mais valores NULL, neste caso podemos olhar com carinho para esta coluna e utilizar sparse columns.
Sendo assim após termos idéia qual foi à coluna que possui uma grande quantidade de valores nulos podemos ali aplicar a função, neste caso sem dúvidas nos resultará em um bom beneficio em comparação como estava antes. Para testarmos como seria o impacto dessa função poderíamos fazer alguns testes, por exemplo:

* Insira alguns registros na tabela a qual possui uma coluna com a função sparse columns

* Insira alguns registros na tabela a qual possui uma coluna que não possui a função sparse columns

* Insira principalmente valores NOT-NULL na tabela que possui a função sparse columns

* Insira principalmente valores NULL na tabela que possui a função sparse columns

CREATE TABLE [dbo].[Cliente]
(
[IdCliente] int PRIMARY KEY,
[Nome] varchar(50) NOT NULL,
[SobreNome] varchar(50) NOT NULL,
[Sexo] bit SPARSE NULL, -- 1 = male, 2 = female
[Telefone] varchar(15) SPARSE NULL,
[Valor] money SPARSE NULL,
[Comentário] varchar(1000) SPARSE NULL
)

Após termos assegurado de criarmos a tabela poderíamos inserir alguns valores nulos na coluna em que possui SPARSE e após isso poderemos ver o resultado pelo procedimento armazenado sp_spaceused, lembre-se: sua tabela terá um ótimo beneficio se você tiver uma grande quantidade de valores nulos.
Após isso podemos também adicionar uma coluna com a função SPARSE:

ALTER TABLE TABELA
ALTER COLUMN NOMECOLUNA ADD SPARSE

Sendo assim podemos também desabilitar-lo:

ALTER TABLE TABELA
ALTER COLUMN NOMECOLUNA DROP SPARSE

Dica: vale lembrar que a coluna que possuir 'sparse column' suporta todos os tipos dados exceto GEOGRAPHY, GEOMETRY, TEXT, NTEXT, IMAGE, TIMESTAMP, User-Definied data types e VARBINARY(MAX) que é FILESTREAM.

Seya!

[]’s
Lucas Souza
http://www.souzalucas.spaces.live.com
http://www.aprendaaprogramar.com.br

Exibições: 206

Comentar

Você precisa ser um membro de Codificando .Net para adicionar comentários!

Entrar em Codificando .Net

Patrocínios

 

 

Comunidade Daruma 

Editora O'Reilly 

 

© 2013   Criado por Alexandre Tarifa.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço