Risponderò alla mia domanda poiché è stato difficile trovare una risposta corretta e mi è stato indicato il problema dall'output del piano di esecuzione di SQL Server 2012. Come vedi nella domanda originale, tutto sembra a posto in superficie. Questo è SQL Server 2008.
Quando eseguo la stessa query nel 2012, ho ricevuto un avviso su CHARINDEX
interrogazione. Il problema è che SQL Server ha dovuto eseguire la conversione del tipo. Address1
è VarChar
e la query ha N'1124' che è Unicode o NVarChar
. Se cambio questa query in questo modo:
SELECT *
FROM LOCAddress
WHERE (CAST(CHARINDEX(LOWER('1124'), LOWER([Address1])) AS int))
Quindi funziona come LIKE
interrogazione. Quindi, la conversione del tipo causata dal generatore di Entity Framework stava causando questo orribile successo nelle prestazioni.