[SQL2008] Reduciendo el almacenamiento para columnas Nulas – SPARSE Columns.


Saludos amigos en esta ocasión les voy a escribir sobre una mejora implementada en SQL Server 2008, la cual nos ayudara mucho cuando deseemos almacenar valores nulos (NULL) o usados con poca frecuencia en nuestras bases de datos.

SQL Server 2008 incorpora las Sparse columns ,sin duda es una mejora que permite la optimización del almacenamiento “zerobyte” de valores NULOS (NULL). Se permiten definir hasta 30,000 columnas dispersas (Sparse columns) en una tabla.

Esta mejora es ideal para diseños de base de datos o aplicaciones que requieren un elevado número de columnas que pocas veces se usan, o para tablas con una serie de columnas que se relacionan con solo un subconjunto de datos almacenados.

Para definir una columna dispersa “Sparse column”, sólo tiene que añadir el atributo de almacenamiento “SPARSE” después de la columna de definición en un comando CREATE o ALTER TABLE, veamos el siguiente ejemplo:

 

CREATE TABLE dbo.Productos
(ProductoID int NOT NULL PRIMARY KEY IDENTITY(1,1),
Producto varchar(255) NOT NULL,
Descripcion varchar(150) SPARSE NULL,
CodigoAlterno varchar(30) SPARSE NULL,
FechaAdd datetime NOT NULL)

 

image

Realicemos unas Inserciones a la tabla Productos, una de las inserciones contendrá valores nulos:

 

INSERT INTO dbo.Productos (Producto,Descripcion,CodigoAlterno,FechaAdd) 
VALUES('WHISKY','Juanito el Caminador','WJC7854',GETDATE()),
      ('AGUA MINERAL',NULL,NULL,GETDATE())
      

Ahora seleccionemos los datos:

SELECT Producto,Descripcion,CodigoAlterno 
FROM dbo.Productos 
WHERE (Descripcion IS NOT NULL) AND (CodigoAlterno IS NOT NULL)

Noten que lo que hicimos no nos afecta en nada aparentemente, la ventaja es que estamos haciendo más eficiente la manera de almacenar las columnas que contengan valores nulos,  en resumen estas columnas aplicaran el ZEROBYTE y ahorremos un poco más de espacio en nuestras bases de datos.

 

  1. 1/10/09

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: