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

postgres11の既存のテーブルにパーティションLISTをアタッチします

    マニュアルからの引用

    したがって、既存の非パーティションテーブルをパーティションテーブルに変更することはできません。

    パーティション化された新しいテーブル(別の名前)を作成し、必要なすべてのパーティションを作成してから、古いテーブルから新しいパーティション化されたテーブルにデータをコピーする必要があります。

    次のようなもの:

    create table clients_partitioned
    (
      .... all columns ...
    )
    PARTITION BY LIST  (client_id);
    

    次に、パーティションを作成します。

    create table clients_1 
       partition of clients_partioned
       values in (1,2,3);
    
    create table clients_1 
       partition of clients_partioned
       values in (4,5,6);
    

    次に、データをコピーします:

    insert into clients_partitioned
    select *
    from clients;
    

    それが完了したら、古いテーブルを削除して、新しいテーブルの名前を変更できます。

    drop table clients;
    alter table clients_partitioned rename to clients;
    

    外部キーとインデックスを再作成することを忘れないでください。



    1. SQLServerでINNERJOINを使用して複数のテーブルから削除するにはどうすればよいですか

    2. 優先IDのリストでmysqlの結果を並べ替えるにはどうすればよいですか?

    3. pg_dumpはテーブルシーケンスを無視しますか?

    4. mysqlのマテリアライズドビュー