http://www.microsoft.com/japan/msdn/net/adonet/datasetenhance.aspx#datasetenhancem_topic2
パフォーマンスの生データ
ADO.NET 1.x の DataSet のパフォーマンスを巡っては開発者から懸念の声が上がっていましたが、特に大量のデータを含む DataSet については、その懸念は正当と言わざるを得ません。 大量のデータを含む DataSet の処理が低速になるケースは 2 つあります。
まず初めにパフォーマンスの低下を感じるのは、行数の多いDataSet (実際には DataTable) を読み込むときです。
DataTable 内の行数が増えると、その行数にほぼ比例して、新しい行の読み込み時間が長くなります。
また、大量のデータを含む DataSet のシリアル化やリモート処理を行う際にもパフォーマンスに影響が出ます。 DataSet に関しては、特にアプリケーション階層間の受け渡しの際にシリアル化の方法が自動認識される点が大きな特徴となっていますが、詳しく見てみると、このシリアル化は非常に冗長でメモリとネットワークの帯域幅を大量に消費することがわかります。 ADO.NET 2.0 では、このようなパフォーマンス上のボトルネックがどちらも解消されています。
新しいインデックス エンジン
DataTable のインデックス エンジンは ADO.NET 2.0 で完全に書き直され、大きなデータセットの処理能力が大幅に向上しています。 その結果、基本的な挿入、更新、削除が高速になり、Fill 操作や Merge 操作も高速になっています。
ベンチマークやパフォーマンス向上の定量化は常にアプリケーションに依存するため話は単純ではありませんが、この変更により、100 万行の DataTable の読み込みでは明らかに桁違いのパフォーマンス向上が見られます。
筆者の環境で ADO.NET 1.1 と Visual Studio 2003 を使ってこのコードを実行したところ、実行時間は約 30 分でした。 ADO.NET 2.0 と Visual Studio 2005 を使った場合、実行時間は約 40 ~ 50 秒になりました。
行の数を 50 万行にしたところ、バージョン 1.1 では約 45 秒かかったのに対し、バージョン 2.0 での所要時間は約 20 秒でした。 環境によって結果は異なりますが、要点は明らかだと思います。