6

MS SQL 2005に主キーを持つテーブルがあり、数十万のレコードがあります。Management Studioでレコードをクエリすると、非常に高速になりますが、以下のコードを使用してレコードを見つけると、数秒かかります。行を更新する必要があるため、データセットを使用する必要があります。どうすればパフォーマンスを向上させることができますか?

objData . ProcName ="myProcName"
objData . CreateCommand()
objData . Parameters("@BName", SqlDbType. VarChar, 20, "MyBranch1")
SqlDataAdapter da = objData . createAdapter()
da . Fill(ds,"MyTable1")

procコードは非常に単純ですが:

select * from MyTable1 Where BranchName = @BName

このデータセットでは、同じ方法で5つのテーブルが開かれるため、合計時間は1分以上になります。

4

2 に答える 2

2

データセットの代わりに datareader の使用を検討し、sqlcommand を使用して手動で更新する必要があります。

場合によっては追加の基準を指定して、取得するレコードの数を制限することも検討する必要があります

于 2012-01-04T14:55:04.977 に答える
1

私は、SQLDataAdapter を使用して非常によく似た遅延動作を見てきました。応答を返すのに数秒かかりましたが、SQL Server Mgmt Studio (同じクライアント マシン上) でまったく同じ手順を実行すると、すぐに応答が返されました。

影響を受けたテーブルのインデックスを再構築したところ、SQLDataAdapter からの応答は瞬時に得られました。

SQLDataReader でこの遅延動作を見たことはありません。私はよく SQLDataReader を使用し、MyTable.Load(MySQLDataReader) を実行するだけです。SQLDataAdapter よりもオーバーヘッドが少ないようです。

于 2012-12-19T19:19:12.147 に答える