ファイルに書き出す必要のある大量のデータを生成/返すOracleプロシージャがいくつかあります。私は現在、データリーダーで達成しようとしています。動作しているようですが、問題なく479MBのファイルを正常に生成できました。dataReaderを取得してからファイルを完成させるのに4分もかかりませんでした。
しかし、特定の手順で取得したdataReaderはクロールしています。信じられないほど遅いです。何が起こっているのかをよりよく理解するためにコードを変更しました。
System.Diagnostics.Debug.Write("Performing .Read() on DataReader: ")
Dim d1 As DateTime = DateTime.Now
Dim result As Boolean = myDataReader.Read()
Dim ts As TimeSpan = DateTime.Now.Subtract(d1)
System.Diagnostics.Debug.WriteLine(ts.ToString)
興味深いのは、私の出力が次のようになってしまうことです。
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:07:33.5037500
私は次に何をすべきか本当に途方に暮れています。07:33.5037500を取る行については、ユニークなものや異なるものは何も見当たりません。助言がありますか?
編集:
みなさん、ありがとうございました。まず、私が知る限り、例外はスローされていません。提案されているように、私は上記の動作を示しているこの特定の手順を調べましたが、手順は途方もなく大規模です。しかし、Oracleの一時テーブルにデータを取り込むために多くのカーソルを使用しているように見えます。返される参照カーソルは、その一時テーブルのSELECT*FROMです。
.Netコードを削除したときにパフォーマンスの問題が存在するかどうかを確認するためにそのカーソルを開くPL/SQLブロックを作成しています。しかし、何か追加の考えがあれば、それは大いにありがたいです。
もう一度ありがとう。これはPL/SQLの問題であり、.NETの問題ではないようです。