Saya akan menjawab pertanyaan saya sendiri karena sulit untuk menemukan jawaban yang benar dan saya diarahkan ke masalah tersebut oleh keluaran Rencana Eksekusi SQL Server 2012. Seperti yang Anda lihat di pertanyaan awal - semuanya terlihat baik-baik saja di permukaan. Ini adalah SQL Server 2008.
Ketika saya menjalankan kueri yang sama pada 2012 saya mendapat peringatan di CHARINDEX
pertanyaan. Masalahnya adalah - SQL Server harus melakukan konversi tipe. Address1
adalah VarChar
dan kueri memiliki N'1124' yaitu Unicode atau NVarChar
. Jika saya mengubah kueri ini sebagai berikut:
SELECT *
FROM LOCAddress
WHERE (CAST(CHARINDEX(LOWER('1124'), LOWER([Address1])) AS int))
Kemudian berjalan sama seperti LIKE
pertanyaan. Jadi, konversi tipe yang disebabkan oleh generator Entity Framework menyebabkan kinerja yang buruk ini.