Jeg vil besvare mit eget spørgsmål, da det var svært at finde det rigtige svar, og jeg blev peget på problemet af SQL Server 2012 Execution Plan output. Som du ser i det originale spørgsmål - alt ser OK ud på overfladen. Dette er SQL Server 2008.
Da jeg kører samme forespørgsel i 2012, fik jeg en advarsel på CHARINDEX
forespørgsel. Problemet er - SQL Server skulle udføre typekonvertering. Address1
er VarChar
og forespørgslen har N'1124', som er Unicode eller NVarChar
. Hvis jeg ændrer denne forespørgsel som sådan:
SELECT *
FROM LOCAddress
WHERE (CAST(CHARINDEX(LOWER('1124'), LOWER([Address1])) AS int))
Det kører derefter det samme som LIKE
forespørgsel. Så typekonvertering, der var forårsaget af Entity Framework-generator, forårsagede dette forfærdelige hit i ydeevnen.