sql >> データベース >  >> RDS >> Oracle

OracleDatabaseでのPL/SQL一括収集の概要

    PL/SQLバルクコレクトの概要

    今日書かれたよく構造化されたクエリは、将来の壊滅的なイベントからあなたを救うことができます。クエリのパフォーマンスは私たち全員が求めているものですが、実際にそれを見つける人はほとんどいません。小さな概念を学ぶことは、より良いクエリ作成スキルにつながる可能性のある経験を積むのに役立ちます。今日、このブログでは、「 Bulk Collect」という小さな概念の1つを学びます。 」。

    一括収集とは、コンテキストスイッチを減らすことです。 クエリのパフォーマンスを向上させます。したがって、一括収集とは何かを理解するには、まずコンテキストスイッチングとは何かを学ぶ必要があります。

    コンテキストスイッチングとは何ですか?

    PL / SQLブロックを記述したり、PL / SQLプログラムを記述して実行したりするたびに、PL /SQLランタイム・エンジンはそれを1行ずつ処理し始めます。このエンジンは、すべてのPL / SQL文を単独で処理しますが、そのPL /SQLブロックにコーディングしたすべてのSQL文をSQLランタイム・エンジンに渡します。これらのSQLステートメントは、SQLエンジンによって個別に処理されます。それらの処理が完了すると、SQLエンジンは結果をPL/SQLエンジンに返します。後者によって結合された結果を生成できるようにします。これを制御の前後にホッピングすることをコンテキストスイッチングと呼びます。

    コンテキストの切り替えはクエリのパフォーマンスにどのように影響しますか?

    コンテキストの切り替えは、クエリのパフォーマンスに直接影響します。コントロールのホッピングが高いほど、オーバーヘッドが大きくなり、パフォーマンスが低下します。これは、コンテキストの切り替えが少ないほどクエリのパフォーマンスが向上することを意味します。

    今、あなたは「これについて何かできないのか」と考えているに違いありません。これらの制御遷移を減らすことはできますか?とにかく、コンテキストスイッチを減らすことができる使用法はありますか?これらすべての質問に対する答えは「はい」です。私たちを助けることができるオプションがあります。 そのオプションは一括収集句です

    一括収集条項とは何ですか?

    Bulk collect句は、複数のスイッチを1つのコンテキストスイッチに圧縮し、PL/SQLプログラムの効率とパフォーマンスを向上させます。

    Bulk collect句は、PL / SQLプログラムからすべてのSQL文呼び出しを収集し、それらを1回でSQL Engineに送信することにより、複数の制御ホッピングを削減します。

    Bulk Collect句はどこで使用できますか?

    一括収集句は、SELECT-INTO、FETCH-INTO、およびRETURN-INTO句で使用できます。

    Bulk Collectステートメントを使用すると、テーブルやビューなどのデータベースオブジェクトから大きなデータセットをSELECT、INSERT、UPDATE、またはDELETEできます。

    バルクデータ処理とは何ですか?

    PL / SQLランタイム・エンジンからSQLエンジンに、またはその逆にデータのバッチをフェッチするプロセスは、バルク・データ処理と呼ばれます。

    バルクデータ処理ステートメントはいくつありますか?

    1つのバルクデータ処理があります これは、一括収集と1つの一括データ処理ステートメントです。 これは、OracleデータベースではFORALLです。

    一括収集句は暗黙カーソルと明示カーソルの両方を使用すると聞きましたか?

    はい、あなたはそれを正しく聞きました。一括収集句は、SQLステートメント内またはFETCHステートメントで使用できます。 SQLステートメントで一括収集句を使用する場合、つまりSELECT INTOを使用する場合は、暗黙カーソルを使用します。一方、FETCHステートメントで一括収集句を使用する場合は、明示的なカーソルを使用します。

    これは、BULKCOLLECTである最初のPL/SQLバルクデータ処理句の簡単な紹介でした。最初のステートメントが完了したら、2番目のバルクデータ処理ステートメントについて学習します。その間、YouTubeチャンネルに登録してください。次のチュートリアルでは、一括収集句を使用してSQLステートメントの効率を向上させる方法を学習します。

    ありがとう、そして素晴らしい一日を!


    1. PostgreSQLクエリでラージオブジェクトのサイズを取得しますか?

    2. ExcelVBAを使用してSQLクエリを実行する

    3. リモートホストからpostgresに接続できません

    4. 指定された座標から5マイルの範囲にあるすべての建物を取得する