Jag kommer att svara på min egen fråga eftersom det var svårt att hitta rätt svar och jag pekade på problemet av SQL Server 2012 Execution Plan output. Som du ser i den ursprungliga frågan - allt ser OK ut på ytan. Det här är SQL Server 2008.
När jag kör samma fråga 2012 fick jag en varning på CHARINDEX
fråga. Problemet är - SQL Server var tvungen att göra typkonvertering. Address1
är VarChar
och frågan har N'1124' som är Unicode eller NVarChar
. Om jag ändrar denna fråga som så:
SELECT *
FROM LOCAddress
WHERE (CAST(CHARINDEX(LOWER('1124'), LOWER([Address1])) AS int))
Den körs sedan på samma sätt som LIKE
fråga. Så typkonvertering som orsakades av Entity Framework-generatorn orsakade denna hemska prestandaträff.