Esta pregunta está relacionada con mi vieja pregunta . La consulta a continuación tardaba entre 10 y 15 segundos en ejecutarse:
SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id]
FROM [company].dbo.[customer]
WHERE (Charindex('123456789',CAST([company].dbo.[customer].[Phone no] AS VARCHAR(MAX)))>0)
En algunos artículos, vi que usar CASTy CHARINDEXno se beneficiará de la indexación. También hay algunos artículos que dicen que el uso LIKE '%abc%'no se beneficiará de la indexación, mientras LIKE 'abc%'que:
http://bytes.com/topic/sql-server/answers/81467-using-charindex-vs-like-where /programming/803783/sql-server-index-any-improvement-for -like-queries http://www.sqlservercentral.com/Forums/Topic186262-8-1.aspx#bm186568
En mi caso, puedo reescribir la consulta como:
SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id]
FROM [company].dbo.[customer]
WHERE [company].dbo.[customer].[Phone no] LIKE '%123456789%'
Esta consulta da el mismo resultado que la anterior. He creado un índice no agrupado para la columna Phone no. Cuando ejecuto esta consulta, se ejecuta en solo 1 segundo . Este es un gran cambio en comparación con los 14 segundos anteriores.
¿Cómo se LIKE '%123456789%'beneficia la indexación?
¿Por qué los artículos enumerados indican que no mejorará el rendimiento?
Intenté reescribir la consulta para usarla CHARINDEX, pero el rendimiento sigue siendo lento. ¿Por qué no CHARINDEXse beneficia de la indexación como parece que lo hace la LIKEconsulta?
Consulta usando CHARINDEX:
SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id]
FROM [Company].dbo.[customer]
WHERE ( Charindex('9000413237',[Company].dbo.[customer].[Phone no])>0 )
Plan de ejecución:

Consulta usando LIKE:
SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id]
FROM [Company].dbo.[customer]
WHERE[Company].dbo.[customer].[Phone no] LIKE '%9000413237%'
Plan de ejecución:

fuente

30%), puede ver elLIKEpatrón suministrado y las estadísticas de resumen de cadena y obtener una estimación más precisa. Armado con eso, podría elegir un plan diferente y más apropiado.