Linq to SQL で大きなパフォーマンスの問題を発見しました。
文字列を使用してテーブルから選択する場合、SQL テーブルが varchar であっても、SQL Server に渡されるパラメーターは常に nvarchar です。これにより、シークではなくテーブル スキャンが発生し、パフォーマンスに大きな問題が発生します。
var q = (
from a in tbl
where a.index == "TEST"
select a)
var qa = q.ToArray();
パラメータは nvarchar として渡されるため、使用前にインデックス全体が varchar から nvarchar に変換されます。
パラメータが varchar の場合、シークは非常に高速です。
これをオーバーライドまたは変更する方法はありますか?
よろしくクレイグ。