2011-08-01 5 views
2

私は、私のコントロール外のデータベース(SQL、Oracle、Access、MySQL、Sharepointなど)から来る非常に大きなデータセット(200万行+)を処理する必要があります。文字列オブジェクトを作成していますが、約100k行でout of memoryを実行します。コードビハインド内のデータテーブルを介してページングする

私が取る唯一の解決策は、データテーブルをより小さな部分に分割し、次の行のブロックで開始する前に各ブロックを永続させることです。

ROW_NUMBER()などを追加できないため、データが格納されたデータテーブルを処理する必要があります。

ポピュレートされたデータテーブルをページングのような小さなデータテーブルに簡単に(パフォーマンスを念頭に置いて)維持できますか?

PSこの機能にはビジュアルコンポーネントはありません。

答えて

1

文字列連結を使用していますか?このようにstring += string

StringBuilderに変更してください。少なくとも20k行では問題はありません。

+1

私は正しい答えとしてあなたのマークを付けましたが、実際には完全な答えではありませんでした。私は受信データテーブルを500行のバッチに分割しました。 – callisto

+0

Tnx。誰かが文字列とパフォーマンスを記述するとき、私の膝の反動反応でした:)私はちょうど興味があります。なぜ100k行の文字列表現が必要なのかはわかりません。また、コードを表示することができれば、さらに手助けすることができます。 – SWeko

+0

このQを参照してください:http://stackoverflow.com/questions/5388682/creating-an-etl-system-data-import-and- (今完成した)プロジェクトの概観のための変換。 MySQLは追加されたばかりの新しいデータソースです – callisto

0

DataTableオブジェクト(処理の前に呼び出し結果をメモリにロードする)を書き込む場合は、前述のプロバイダごとにデータレアを使用する方がよいので、各行をあなたはすでにこれを無視datareaders-使用している場合、それはgreat answer to another questionリスト

...代わりに、メモリ内のデータテーブルを格納するデータベースからのDataReaders/DataTableの

のプロ/短所を読まされます。しかし、あなたの記憶の問題は、検索結果を保存することからかもしれません...

関連する問題