0

奇妙な状況に続いて、昨日SqlClientを使用して並べ替えられた結果セットを取得したときにc#で取得しました。

たとえば、次のSQLクエリ:

SELECT Num, Name FROM Customer WHERE Num LIKE '%V%' OR Name LIKE '%V%' ORDER BY Num ASC

この特別な場合に注文する結果セットの長さは約100行です。

問題は次のとおりです。SQLServer自体でクエリを実行すると、非常に高速になります。「クエリの実行」をクリックした瞬間に結果が表示されます。しかし、SqlClientを使用してC#でクエリを実行すると、非常に遅くなります(約5〜10秒)。プログラムのすべての部分をベンチマークしたところ、SQLサーバーへの接続は約10ミリ秒で行われるため、2台のマシン間のリンクに問題はないことがわかりました。

クエリからORDERBYNum ASCを削除すると、SqlClientを使用したC#のクエリが、SQLサーバーで直接クエリを実行するのとほぼ同じ速度で結果を返すことがわかるまで、ほとんどすべてを試しました。

だから私の質問は:SQLServer自体と比較して使用時間を数千万倍するためにC#のSqlClientがORDERBYで何をしているのですか?=)

4

3 に答える 3

0

時間を盗んで申し訳ありませんが、私は自分で問題を見つけました。私はさまざまなデータベースを使用しました(sql-server自体でクエリをテストするときの高速で最適化された本番データベースとc#の低速で最適化されていない開発データベース)。-.-

于 2011-01-21T10:30:47.350 に答える
0

クエリを 2 回ずつ実行してみて、時間差が生じるかどうかを確認してください。これにより、時間がかかるのが接続なのかクエリなのかが決まります。

接続にかかる時間を測定するときは、あなたが考えていることの一部しか測定していません. データベースとの実際のセッションは、必要になるまで、つまり最初のクエリを実行するまで開始されません。

于 2011-01-21T09:35:06.380 に答える
0

同じトピックに関するこちらの良い説明をご覧ください: http://social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/aa4537ed-fb69-441d-82d3-0216f497f995

このクエリは、SSMS とアプリの違いを見つけるのに役立つ場合があります。

SELECT * FROM sys.dm_exec_connections;

これも見てください http://forums.asp.net/t/917652.aspx

于 2011-01-21T09:48:11.890 に答える