2016-09-28 5 views
0

テーブル行を個別に処理するPL/SQL関数を作成しています。私はそれに鍵を渡す。その行が処理されているかどうかを確認する最速の方法は何ですか?そうであれば無視してください。それは馬鹿に聞こえるかもしれませんが、常にテーブル内のすべての行を処理しようとしていると主張してください(主に他のこともするので)。行を「無視する」最速の方法

私が持っていた解決策の1つは、そのテーブルにフラグ列を作成することでした(私が考えることができる最速)、別のテーブルにレコードを挿入し、行がそのテーブルにない(おそらく遅い)かどうかを確認します。

+0

する必要がある機能は何ですか?列に基づいて注文を指定する必要があります。投稿された質問が広すぎる。これを行うには実際にPL/SQLが必要ない場合があります。いくつかのサンプルデータと期待される結果を投稿する。 –

+0

@vkp私の質問が更新されました。 – Mocking

+1

あなたがスピードを気にしているなら、カーソルを使って消す方法を見つけてください。あなたの処理は、カーソルの必要性を示唆していません。 –

答えて

0

PL/SQL関数を使用する必要があると仮定して、処理する必要がある行セットのみを渡す必要があります。つまり、プレーンSQLを使用して必要なテーブルから行を選択し、それを関数に渡すことを意味します。しかし、いずれの場合でも、データベース環境でカーソルを使用する必要が生じたときには、データベースが最適化されているわけではないため、何をしているのか非常に注意深く見てください。

+1

これは答えの冒頭にある一種の矛盾です。_データベース環境でカーソルを使用する必要が生じたときに何をしているのかを非常に注意深く見てください。 。 PL/SQLでは、すべてのSELECT文は暗黙的または明示的なカーソルであるため、カーソルを使用することはPL/SQLで処理するために不可欠で最適な方法です。 – user272735

+0

私は、通常のsqlの代わりにpl/sqlを使用するのは、通常は必要ないということです。カーソルを使用して行ごとに結果セットを反復処理することに注意する必要がありました。 –

+0

プロダクションインスタンスでは 'regular' SQLを実行することはできません。プロシージャと関数のみです。 – Mocking

関連する問題