Задать вопрос
  • Как создать таблицу, секционированную по нескольким столбцам в PostgreSQL?

    @Alex-ok
    Программист .NET, SQL, ASP NET
    К примеру у нас есть таблица sales, которую надо секционировать по столбцам date и region.

    CREATE TABLE sales (
        id serial PRIMARY KEY,
        date date NOT NULL,
        region text NOT NULL,
        amount numeric
    ) PARTITION BY RANGE (date, region);


    Создадим секции для каждой комбинации диапазонов дат и регионов. Например, для региона "North" в диапазоне дат 2022 года.

    CREATE TABLE sales_2022_north PARTITION OF sales
        FOR VALUES FROM ('2022-01-01', 'North') TO ('2023-01-01', 'North');


    Для региона "South" в том же диапазоне дат.

    CREATE TABLE sales_2022_south PARTITION OF sales
        FOR VALUES FROM ('2022-01-01', 'South') TO ('2023-01-01', 'South');


    Вставка значений:

    INSERT INTO sales (date, region, amount) VALUES ('2022-06-01', 'North', 100.00);
    INSERT INTO sales (date, region, amount) VALUES ('2022-06-01', 'South', 200.00);


    Проверка:

    SELECT * FROM sales;
    SELECT * FROM sales_2022_north;
    SELECT * FROM sales_2022_south;
    Ответ написан
    Комментировать