• ベストアンサー

カーソルオープンの処理について

バッチ処理をするために、DB2の埋め込みSQLを使用していますが問題があります。 処理対象のデータが大量にあるのですが、カーソルのオープン処理で時間がかかってしまうため、時間内に終了することができません。 カーソルオープン処理を早くする方法がありましたら教えていただけますでしょうか。 ちなみに、 1.取得件数とオープン処理速度は全く関係がないように見えます。 2.インデックスを貼ってみましたが、変わりませんでした。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • AS400
  • ベストアンサー率69% (9/13)
回答No.2

カーソルをOPENするという事は、SELECTを実行しているのに等しいので、OPENを速くしたいという事は、そのカーソルで定義しているSQL文の実行速度を速くするしかないですね。 ですので、対処方法としては通常のSQLをチューニングする方法と同じになります。 遅い理由が分からないのでしたら、まずは該当のSQLのEXPLAINを取得する事をおすすめします。(EXPLAINの方法が分からない場合は、参考URLの「EXPLAINアクセスプラン編」を読んでみてください) > 1.取得件数とオープン処理速度は全く関係がないように見えます。 そうですね。何行FETCHするか?はSQLを実行したあとの話なのでOPENの速度には関係ないですね。 > 2.インデックスを貼ってみましたが、変わりませんでした。 そのインデックスが本当に使われているのかEXPLAINで確認された方がよいと思います。またRUNSTATSは実行されていますか?

参考URL:
http://www-6.ibm.com/jp/software/data/developer/library/techdoc/kantandb2.html
taaar
質問者

お礼

返信が遅くなりました。 RUNSTATSは実行していたのですが、 EXPLAINで確認してみたところ、インデックスが正しくつかわれておりませんでした。 インデックスを正しく貼りなおしたら期待する速度が出せるようになりました。 ありがとうございました。

その他の回答 (1)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

直接の回答ではありませんが。 カーソルオープンで条件による抽出とソートを行うことがあるようです。 参考URL。

参考URL:
http://www-6.ibm.com/jp/software/data/db2mag/2002no4/column05.html
taaar
質問者

お礼

返信が遅くなりすみません。 参考になりました。 ありがとうございました。