ホームページ >データベース >mysql チュートリアル >SSMS では SQL クエリが速いのに、C# アプリケーションでは遅いのはなぜですか?

SSMS では SQL クエリが速いのに、C# アプリケーションでは遅いのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 07:04:34157ブラウズ

Why is my SQL Query Fast in SSMS but Slow in my C# Application?

アプリケーションではコードの実行が遅いが、SSMS では高速に実行される

問題:

SQL Server でデータを迅速に返すクエリManagement Studio (SSMS) を C# から実行すると、かなりの時間がかかりますapplication.

コード:

C# コードは、SqlDataAdapter とその Fill メソッドを使用してクエリを実行します。

using (var conn = new SqlConnection(...))
using (var ada = new SqlDataAdapter(...))
{
    ada.Fill(Logs);
}

SSMS クエリは次のとおりです。で実行されたものと同じですapplication.

原因:

実行時間の不一致は、アプリケーションと SSMS でのパラメーターの処理方法の違いによって発生します。アプリケーションでは、AddWithValue メソッドを使用して NVARCHAR 型のパラメーターを追加しますが、SSMS では、パラメーターは VARCHAR として宣言されます。

解決策:

解決するにはこの問題は、次のいずれかです:

  1. アプリケーションにパラメーターを追加するときに型を受け入れるコンストラクターを使用するコード:
ada.SelectCommand.Parameters.Add("@clientID", SqlDbType.Varchar, 200);
  1. SQL テキストにパラメータをキャストします:
where client_id = cast(@clientID as varchar(200))

潜在的なキャッシュ汚染にも対処するため、最初の解決策が推奨されます。

追加考慮事項:

  • アプリケーションと SSMS の両方が同じコンピューターを使用してログインしていることを確認してください。
  • クエリで参照されているテーブルには適切なインデックスがあり、SSMS で適切にパフォーマンスされています。 .
  • クエリのパフォーマンスに対するパラメータ キャッシュの影響を考慮してください。

以上がSSMS では SQL クエリが速いのに、C# アプリケーションでは遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。