Columnas Sparse

Las columnas sparse (Columnas Dispersas) son introducidas en SQL Server 2008.

Las columnas sparse son columnas normales que disponen de un almacenamiento optimizado para los valores NULL. Este tipo de columnas reducen los requisitos de espacio de los valores NULL a costa de una mayor sobrecarga a la hora de recuperar valores no NULL. Considere la posibilidad de utilizar columnas sparse si el ahorro de espacio se sitúa entre el 20 y el 40 por ciento.

A continuación, algunas restricciones de uso de los columnas sparse:

  • Deben aceptar valores NULL y no pueden tener las propiedades ROWGUIDCOL ni IDENTITY.
  • No pueden adoptar los tipos de datos siguientes: text, ntext, image, timestamp, tipo de datos definido por el usuario, geometry ni geography; ni tener el atributo FILESTREAM.
  • No pueden tener un valor predeterminado.
  • No se pueden enlazar a una regla.
  • Las columnas dispersas son incompatibles con la compresión de datos. Por consiguiente, las columnas dispersas no se pueden agregar a las tablas comprimidas, ni se puede comprimir ninguna tabla que las contenga.

Mas información haciendo clic en la imagen: 

USE tempdb

GO

 

–prueba 1 sin sparse

CREATE TABLE Documento_Sin_Sparse(

Codigo INT IDENTITY(1,1) PRIMARY KEY,

CodigoDocumento int NOT NULL,

Titulo varchar(200) NOT NULL,

Epecificacion char(500) NULL,

Ubicacion smallint NULL,

Grupo char(500) NULL);

GO

 

–Insertamos 100 registros con todos los campos llenos

INSERT Documento_Sin_Sparse (CodigoDocumento,Titulo,Epecificacion,Ubicacion, Grupo)

VALUES (1,‘Tire Spec 1’,‘AXZZ217’,27,‘Men 25 – 35’)

GO 100

 

–Insertamos 10000 registros con los campos que no permiten valores nulos

INSERT Documento_Sin_Sparse (CodigoDocumento,Titulo)

VALUES (2,‘Survey 2142’)

GO10000

 

Revisamos los datos

SELECT FROM Documento_Sin_Sparse

image

 

–Creamos un indice

CREATE INDEX  ix_title ON Documento_Sin_Sparse (Titulo)

–ver espacio utilizado por la tabla

sp_spaceused Documento_Sin_Sparse

 

image

 

–prueba 2 usando sparse

CREATE TABLE Documento_Con_Sparse (

Codigo INT IDENTITY(1,1) PRIMARY KEY,

CodigoDocumento int NOT NULL,

Titulo varchar(200) NOT NULL,

Epecificacion char(500) SPARSE NULL,

Ubicacion smallint SPARSE NULL,

Grupo char(500) SPARSE NULL);

GO

 

–Insertamos 100 registros con todos los campos llenos

INSERT Documento_Con_Sparse (CodigoDocumento,Titulo,Epecificacion,Ubicacion, Grupo)

VALUES(1,‘Tire Spec 1’,‘AXZZ217’,27,‘Men 25 – 35’)

GO 100

 

–Insertamos 10000 registros con los campos que no permiten valores nulos

INSERT Documento_Con_Sparse(CodigoDocumento,Titulo)

VALUES (2,‘Survey 2142’)

GO 10000

Revisamos los datos

SELECT*FROM Documento_Sin_Sparse

image

–crear indice

CREATE INDEX ix_title ON  Documento_Con_Sparse(Titulo)

–ver espacio utilizado por la tabla

sp_spaceused Documento_Con_Sparse

image

Observamos que la columna data y tamaño del índice disminuyo.

2 comentarios en “Columnas Sparse

    • Hola! Gracias por tu comentario, tenemos varios artículos que puede ser de tu interes. Tambien los foros para que plantees tus dudas.
      Saludos

      El equipo dbLearner

Deja un comentario

Tu dirección de correo electrónico no será publicada.