(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
SQL Server

Cómo crear un índice no clustered en SQL Server

João Barros 12 de March de 2024 2 min de lectura

Las consultas lentas en SQL Server casi siempre comparten la misma causa: falta un índice adecuado. Un índice no clustered es la forma más rápida de acelerar búsquedas por columnas que no forman parte de la clave primaria.

Requisitos previos

  • SQL Server (2016 o superior) y SQL Server Management Studio (SSMS) o Azure Data Studio.
  • Permisos de ALTER en la tabla donde vas a crear el índice.
  • Una tabla con datos suficientes para notar la diferencia (algunos miles de filas).

Paso 1: Identificar la columna a indexar

Elige la columna que aparece con frecuencia en cláusulas WHERE o JOIN. En este ejemplo vamos a indexar la columna Email de la tabla Clientes.

Cómo crear un índice no clustered en SQL Server

Paso 2: Crear el índice no clustered

Usa la instrucción CREATE NONCLUSTERED INDEX, dando un nombre descriptivo al índice:

CREATE NONCLUSTERED INDEX IX_Clientes_Email
    ON dbo.Clientes (Email);

Si tus consultas devuelven más columnas, inclúyelas con INCLUDE para crear un índice de cobertura:

CREATE NONCLUSTERED INDEX IX_Clientes_Email_Inc
    ON dbo.Clientes (Email)
    INCLUDE (Nome, Telefone);

Paso 3: Confirmar que la consulta usa el índice

Activa el plan de ejecución real en SSMS (Ctrl+M) y ejecuta la consulta:

SELECT Nome, Telefone
FROM dbo.Clientes
WHERE Email = 'ana@exemplo.pt';

Verificar el resultado

En el plan de ejecución deberías ver un Index Seek sobre IX_Clientes_Email en lugar de un Table Scan. El Index Seek significa que SQL Server salta directamente a las filas correctas — mucho más rápido.

Conclusión

Crear el índice correcto es la optimización con mejor retorno en SQL Server. Indexa las columnas que realmente filtras y evita indexar todo — cada índice acelera las lecturas pero hace las escrituras un poco más lentas. ¿Cuál de tus consultas más lentas se beneficiaría de un índice hoy?

Compartir: