ホームページ >データベース >mysql チュートリアル >パラメーター スニッフィングが原因で発生する EF 6 クエリ タイムアウトを解決するにはどうすればよいですか?
SSMS の効率的な SQL にもかかわらず、EF 6 クエリ タイムアウトに関する問題は、パラメーター スニッフィングを示唆しています。これを解決するには、次の点を考慮してください:
Can EF Embed "OPTION RECOMPILE" Hint?
はい、EF 6 では、実行前に SQL コマンドをインターセプトできます。 IDbCommandInterceptor を実装することで、「OPTION RECOMPILE」ヒントを追加できます。実装例を次に示します:
public class OptionRecompileHintDbCommandInterceptor : IDbCommandInterceptor { public void AddQueryHint(IDbCommand command) { if (command.CommandType != CommandType.Text || !(command is SqlCommand)) return; if (command.CommandText.StartsWith("select", StringComparison.OrdinalIgnoreCase) && !command.CommandText.Contains("option(recompile)")) { command.CommandText = command.CommandText + " option(recompile)"; } } // Implementation of other interface methods... }
このインターセプタを使用するには、最初にアプリケーションに追加するだけです:
DbInterception.Add(new OptionRecompileHintDbCommandInterceptor());
さらなる考慮事項
以上がパラメーター スニッフィングが原因で発生する EF 6 クエリ タイムアウトを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。