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

パーティション表oracleの更新

    あなたが解決しようとしている問題は何ですか?個別のUPDATEを実行することは意味がありません ループ内の各パーティションに対するステートメント。 ab = 'c'であるテーブルのすべての行を本当に更新したい場合 、1つのUPDATEを発行するだけです ステートメント

    UPDATE cdr_data cdt
       SET a = 'B'
     WHERE ab = 'c'
    

    潜在的にPARALLEL Oracleが複数のパーティションを並行して更新できるようにするヒント。

    本当に、本当に各パーティションを個別に更新したい場合は、パーティションキーに基づいて更新する方がはるかに理にかなっています。たとえば、テーブルに日付に基づく日次パーティションがある場合

    FOR i IN 1 .. <<number of daily partitions>>
    LOOP
      UPDATE cdr_data cdt
         SET a = 'B'
       WHERE ab = 'c'
         AND partition_key = <<minimum date>> + i;
    END LOOP;
    

    partition( <<partition name>> )を使用する 構文は絶対的な最後の手段です。その道を進むことを本当に決心している場合は、動的SQLを使用し、ループ内でSQLステートメントを作成し、EXECUTE IMMEDIATEを使用する必要があります。 またはdbms_sql 実行します。



    1. MariaDBがXpandでグローバルスケールを実現する方法

    2. onUpgradeメソッドが呼び出されたことはありますか?

    3. 文字列修飾子での REGEXP_SUBSTR の使用

    4. あいまいな列クエリ