Responderé a mi propia pregunta, ya que fue difícil encontrar la respuesta correcta y la salida del Plan de ejecución de SQL Server 2012 me señaló el problema. Como puede ver en la pregunta original, todo se ve bien en la superficie. Este es SQL Server 2008.
Cuando ejecuté la misma consulta en 2012, recibí una advertencia en CHARINDEX
consulta. El problema es que SQL Server tuvo que hacer una conversión de tipos. Address1
es VarChar
y la consulta tiene N'1124' que es Unicode o NVarChar
. Si cambio esta consulta así:
SELECT *
FROM LOCAddress
WHERE (CAST(CHARINDEX(LOWER('1124'), LOWER([Address1])) AS int))
Luego se ejecuta igual que LIKE
consulta. Entonces, la conversión de tipo que fue causada por el generador de Entity Framework estaba causando este horrible golpe en el rendimiento.