Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
A idéia começou a partir de um comentário gerado no post Data Buffer, quando o DBA SQL sugeriu a utilização do DBCC PAGE para visualizar os registros dentro de um buffer – enfim, ele queria ver os bits & bytes do SQL Server. Isso me lembrou uma pergunta bastante interessante sobre o comportamento do banco de dados:
Qual a diferença em termos de espaço em disco de usar NULL ou NOT NULL? É possível economizar espaço?
Criamos duas tabelas A e B, cuja única diferença é o campo coluna ser NULL ou NOT NULL. Segue a definição:
CREATE TABLE A( coluna CHAR(100) NULL )
CREATE TABLE A( coluna CHAR(100) NOT NULL )
Em seguida, populamos a tabela com uma série de registros.
INSERT A VALUES (NULL)
GO 1000
INSERT B VALUES ('ABCDEF')
GO 1000
Ambas as tabelas utilizam campos CHAR(100), mas populamos a tabela A com 1000 registros nulos, enquanto que a tabela B possui 1000 registros ‘ABCDEF’.
Medimos o espaço utilizado em disco através da stored procedure sp_spaceused.
EXEC sp_spaceused'A'
EXEC sp_spaceused 'B'
Uau! As tabelas apresentam o mesmo espaço em disco! Seria isso uma surpresa?
A diferença de NULL e NOT NULL não faz diferença em economia de espaço para tipos de dados de tamanho fixo. Isso inclui CHAR, INTEGER, DATETIME, FLOAT, entre outros.
Existe duas formas de economizar espaço:
Anonymous
October 27, 2010
To começando agora um curso Gestor de T.i, na concepção de preenchimento a Tab 2, precisa obrigatoriamente ser prenchida com algum dado?
Anonymous
October 27, 2010
Olá Edcarlos! Essa é uma pergunta de modelagem. Em geral, as tabelas contém informações inter-relacionadas e, por isso, é importante preencher com dados - são raros os casos que são necessárias tabelas vazias. Isso responde? Continue mandando suas perguntas!
Abraços, Fabricio
Anonymous
October 27, 2010
Valeu pela resposta, Como disse to começando agora, vc me indicaria algum material especifico. To vendo a materia Introdução ao Banco de Dados.
Anonymous
October 27, 2010
Boa Ninja,
Mas Opa, e o Sparse?
Abraços...
Anonymous
March 04, 2011
Fiz uma brincadeira aqui com os exemplos do Fabricio, criando duas outras tabelas iguais com o SPARSE, e veja o resultado:
name rows reserved data index_size unused
C 1000 24 KB 16 KB 8 KB 0 KB name rows reserved data index_size unused
D 1000 136 KB 128 KB 8 KB 0 KB Moral da História: Campo char com SPARSE e a maioria dos campos NULL o ganho de espaço é fantástico, o resultado é como se fosse VARCHAR. Com a maioria dos registros preenchidos, haverá um aumento do espaço utilizado (128Kb). :-(
Please sign in to use this experience.
Sign in