Cuánto ocupa un nulo (tipos int y varchar)

Escrito por qwalgrande 02-09-2011 en General. Comentarios (0)

Aquí la prueba en cuestión (hecha en SQL Server 2005 y en Denali CTP3, con idéntico resultado):

 

create table nulos (ident int not null identity(1,1), id int null);

create table ceros (ident int not null identity(1,1), id int null);

create table miles (ident int not null identity(1,1), id int null);

create table nonulos (ident int not null identity(1,1), id int not null);

create table cadenas (ident int not null identity (1,1), id varchar(10) null);

create table cadnulas (ident int not null identity (1,1), id varchar(10) null);

go

set nocount on

go

insert nulos (id) values (null);

insert ceros (id) values (0);

insert miles (id) values (1000000000);

insert nonulos (id) values (1000000000);

insert cadenas (id) values ('0');

insert cadnulas (id) values (null);

go 100000

exec sp_spaceused nulos   --> 1768 KB

exec sp_spaceused ceros   --> 1768 KB

exec sp_spaceused miles   --> 1768 KB

exec sp_spaceused nonulos --> 1768 KB

exec sp_spaceused cadenas --> 1872 KB

exec sp_spaceused cadnulas--> 1352 KB

go

 

Y el resultado:

  • Un int ocupa lo mismo si es nulo o no, si está relleno o no. Como todos los campos de tamaño fijo.
  • Un varchar ocupa menos si es nulo.