SR0005: Evite usar modelos que comiencen con "%" en predicados LIKE

Identificador de regla

SR0005

Categoría

Microsoft.Performance

Cambio problemático

Poco problemático

Causa

El predicado LIKE de una cláusula WHERE empieza con el carácter comodín, "%".

Descripción de la regla

Podría producir un recorrido de tabla si utiliza una cláusula WHERE que contiene un predicado LIKE como '%modelo cadena' para buscar texto que puede aparecer en cualquier lugar de una columna.

Cómo corregir infracciones

Para resolver este problema, debe cambiar la cadena de búsqueda para que empiece con un carácter que no sea un carácter comodín (%) o debe crear un índice de texto completo.

Cuándo suprimir advertencias

Podría suprimir esta advertencia si no usa apenas la instrucción que produce esta advertencia o si la tabla nunca contiene más que unas pocas filas.

Ejemplo

En el primer ejemplo, la instrucción SELECT hará que se examine la tabla porque la cadena de búsqueda comienza con un carácter comodín. En el segundo ejemplo, la instrucción causará una búsqueda de índice porque la cadena de búsqueda no comienza con un carácter comodín. Una búsqueda de índice recupera sólo las filas que coinciden con la cláusula WHERE.

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE '%pples' 

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE 'A%' 

Vea también

Conceptos

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