SR0004: Evitar utilizar columnas que no tienen índices como expresiones de comprobación en predicados IN

Identificador de regla

SR0004

Categoría

Microsoft.Performance

Cambio problemático

Poco problemático

Causa

Un predicado IN hace referencia a una columna que no tiene un índice.

Descripción de la regla

Produce un recorrido de tabla si utiliza una cláusula WHERE que hace referencia a una o más columnas que no están indizadas como parte de un predicado IN. El recorrido de tabla reducirá el rendimiento.

Cómo corregir infracciones

Para resolver este problema, debe realizar uno de los siguientes cambios:

  • Cambie el predicado IN para hacer referencia a las columnas que tienen un índice.

  • Agregue un índice a cualquier columna a la que haga referencia el predicado IN y que todavía no tenga un índice.

Cuándo suprimir advertencias

Podría suprimir esta advertencia si la tabla nunca contendrá más que unas pocas filas.

Ejemplo

En este ejemplo, una instrucción SELECT simple hace referencia a una columna, [c1], que no tenía ningún índice. La segunda instrucción define un índice que puede agregar para resolver esta advertencia.

CREATE PROCEDURE [dbo].[Procedure3WithWarnings]
AS
SELECT [Comment] 
FROM [dbo].[Table2]  
WHERE [c1] IN (1, 2, 3)

CREATE INDEX [IX_Table2_C1]
ON [dbo].[Table2] (c1);

Vea también

Conceptos

Analizar el código de base de datos para mejorar la calidad del código