Saltar al contenido
DBAExperts
SQL Server Rendimiento

Cómo crear un índice en SQL Server (clustered vs nonclustered)

Los indices aceleran las consultas, pero cada uno tiene un costo en escrituras y espacio. Aqui la diferencia entre clustered y nonclustered y como crearlos.

  1. 1

    Entiende clustered vs nonclustered

    El clustered define el orden fisico de la tabla: solo puede haber uno, normalmente la llave primaria. El nonclustered es una estructura aparte que apunta a las filas: puedes tener varios.

    -- Un indice clustered por tabla (suele ser la PK)
    CREATE CLUSTERED INDEX IX_Ventas_Fecha
    ON dbo.Ventas (Fecha);
  2. 2

    Crea un indice nonclustered para tus consultas

    Indexa las columnas que aparecen en el WHERE y en los JOIN. El orden de las columnas importa: la mas selectiva o la del filtro de igualdad primero.

    CREATE NONCLUSTERED INDEX IX_Ventas_Cliente_Fecha
    ON dbo.Ventas (ClienteID, Fecha);
  3. 3

    Usa columnas incluidas (INCLUDE) para cubrir la consulta

    INCLUDE agrega columnas al nivel hoja del indice sin ordenarlas, para que la consulta se resuelva sin ir a la tabla (indice cubridor).

    CREATE NONCLUSTERED INDEX IX_Ventas_Cliente_Cubridor
    ON dbo.Ventas (ClienteID)
    INCLUDE (Total, Estatus);
  4. 4

    Revisa si el indice se usa

    Un indice que nadie usa solo pesa en las escrituras. Consulta las estadisticas de uso antes de dejarlo permanente.

    SELECT OBJECT_NAME(s.object_id) AS tabla, i.name AS indice,
           s.user_seeks, s.user_scans, s.user_updates
    FROM sys.dm_db_index_usage_stats s
    JOIN sys.indexes i ON s.object_id = i.object_id AND s.index_id = i.index_id
    WHERE s.database_id = DB_ID();

// el error común

Mas indices no siempre es mejor. Cada indice hace mas lentos los INSERT, UPDATE y DELETE, y ocupa espacio. Evita indices duplicados o casi identicos. Crear indices en tablas grandes bloquea: usa WITH (ONLINE = ON) en Enterprise para no interrumpir la operacion.

// cuándo conviene un experto

Diseñar el conjunto correcto de indices requiere analizar tus consultas reales y sus planes. En dba.mx hacemos tuning de indices con evidencia (no adivinando), para que rindan sin inflar las escrituras. Techo cerrado.

Agenda un Escaneo — desde USD $550

Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.