0

現在、Oracle 11g データベースを使用する .net ソリューションのデータ アクセス コードを検討しています。データベースから取得したデータを使用して .net コレクションを埋める機能を持つコードを見つけました。この目的を達成するために、コードはデータ アクセス レイヤーで次の手順を使用します。

  1. 入力データをグローバル一時テーブルに挿入します。このデータはフロントエンドから取得されます。フロント エンドは文字列を受け取り、グローバル一時テーブルに対して DML 挿入ステートメントを作成します。このステートメントは を使用して実行されOracleCommand.ExecuteNonQuery()ます。
  2. 目的の手順を実行します。この手順では、前の手順で入力されたグローバル一時テーブルを使用して出力を生成します。
  3. 手順 2 でグローバル一時テーブルからデータを読み取ります。

そのようなものを見るのはこれが初めてです。このコードが実行されているのをまだ見ていませんが、このコードにはパフォーマンスと保守性の問題がある可能性があると思います。通常、グローバル一時テーブルに頼らずに機能を実装する手順を作成することによって、この手順が実行されるのを見てきました。

  1. 最初のアプローチはパフォーマンスの問題を引き起こしますか?
  2. 最初のアプローチに反対する権威ある情報源を参照できますか?
4

1 に答える 1

1

グローバル一時テーブルは、通常のテーブルと同じ速度で実行されます。それらはディスクに書き込まれ、ブロックが含まれ、バッファキャッシュにロードされます。

一部のトランザクション機能しかありません。ドキュメントを参照してください。

アプリケーションをどのように実装するかは、あなたの選択です。データを処理する前にテーブルにデータをロードすることは、データが大きく、すべてをメモリに保持できない場合の戦略になる可能性があります。そして... これらのシナリオをテストできます。

于 2012-09-13T06:24:02.617 に答える