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