Ik zal mijn eigen vraag beantwoorden omdat het moeilijk was om het juiste antwoord te vinden en ik werd op het probleem gewezen door de uitvoer van het SQL Server 2012 Execution Plan. Zoals je ziet in de oorspronkelijke vraag - alles ziet er op het oppervlak goed uit. Dit is SQL Server 2008.
Toen ik dezelfde query uitvoerde in 2012 kreeg ik een waarschuwing op CHARINDEX
vraag. Het probleem is - SQL Server moest typeconversie doen. Address1
is VarChar
en de zoekopdracht heeft N'1124', wat Unicode of NVarChar
is . Als ik deze zoekopdracht als volgt verander:
SELECT *
FROM LOCAddress
WHERE (CAST(CHARINDEX(LOWER('1124'), LOWER([Address1])) AS int))
Het werkt dan hetzelfde als LIKE
vraag. Dus typeconversie die werd veroorzaakt door de Entity Framework-generator veroorzaakte deze vreselijke prestatie.