基本的にやっているEFで使用しているLINQのラインがありますmyTable.Where(c => c.Contains('mystring'));
生成されたコードは次のとおりです。
SELECT TOP (300)
[Extent1].[ID] AS [ID],
[Extent1].[FKFishEntityID] AS [FKFishEntityID],
[Extent1].[Fish] AS [Fish],
[Extent1].[FishText] AS [FishText],
[Extent1].[FishType] AS [FishType]
FROM [dbo].[Fish] AS [Extent1]
WHERE [Extent1].[FishText] LIKE @p__linq__0 ESCAPE '~'
私の2つの質問は次のとおりです。
LIKE の代わりに CONTAINS(...) を使用するにはどうすればよいですか? テーブルがフルテキスト インデックスを使用している場合、LIKE は非常に遅いようです。クエリをコピーして貼り付けると、実行に 4 秒かかりますが、LIKE を CONTAINS() に変更すると、すぐに実行されます。
ESCAPE '~' を実行するのはなぜですか? これをSQLサーバーにコピペすることで、「ESCAPE」の部分を外すと約4倍速く実行できます。