【Dapperの罠】C#の文字列がSQL Serverのインデックスを『静かに』殺しているかもしれない話
Dapperを使ってSQL Serverにクエリを投げる際、C#の文字列(string型)の扱いによってインデックスが無視され、パフォーマンスが劇的に低下するケースがあります。これは.NETのstringがデフォルトでUnicode(nvarchar)として扱われる一方、DB側がvarchar(非Unicode)で定義されている場合に発生する『型不一致による暗黙の変換』が原因です。エラーが出ないため気づきにくいですが、大規模なテーブルでは深刻な遅延を招く「サイレント・キラー」となります。適切な型指定やDbStringの活用でこの問題を回避しましょう。