質問

現在、DataTable を使用してデータベースから結果を取得し、コードで使用できます。

ただし、Web 上の多くの例では、代わりに DataSet を使用し、コレクション メソッドを通じてテーブルにアクセスしています。

SQL 結果の保存方法として DataSet または DataTable を使用することには、パフォーマンスの面でもその他の面でも利点はありますか?

役に立ちましたか?

解決

それは実際に持ち帰るデータの種類によって異なります。DataSet は (実際には) DataTable オブジェクトの単なるコレクションであるため、複数の個別のデータ セットを 1 つのオブジェクトに返すことができるため、より管理しやすくなります。

パフォーマンスの点では、.NET 構造の「間違った」選択よりも、最適化されていないクエリの方が非効率になる可能性が高くなります。少なくとも、それが私の経験です。

他のヒント

大きな違いの 1 つは、DataSet が複数のテーブルを保持でき、それらのテーブル間の関係を定義できることです。

ただし、単一の結果セットのみを返す場合は、DataTable がより最適化されると思います。DataSet が行う機能を提供し、複数の DataTable を追跡するには、ある程度のオーバーヘッド (小さいことは認められます) が必要だと思います。

1.x では、DataSet ではできるのに DataTable ではできないことがありました (正確には覚えていません)。2.x ではすべてが変更されました。私の推測では、多くの例で依然として DataSet が使用されているのはそのためだと思います。DataTable は軽量であるため、高速になるはずです。単一の結果セットのみを取得する場合は、2 つのうちの最良の選択です。

DataSet の機能の 1 つは、ストアド プロシージャで複数の select ステートメントを呼び出すことができる場合、DataSet にはそれぞれに 1 つの DataTable が含まれることです。

DataTable にデータを入力するときに、BeginLoadData() の呼び出し、データの挿入、EndLoadData() の呼び出しなど、いくつかの最適化を使用できます。これにより、インデックスのメンテナンスなど、DataTable 内の一部の内部動作がオフになります。見る この記事 詳細については。

とにかく 1 つのテーブルのみを扱う場合、私が見つけた最大の実際的な違いは、DataSet には "HasChanges" メソッドがあるが、DataTable にはがないことです。ただし、どちらにも「GetChanges」があるため、それを使用して null をテストできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top