Использование наследования в PostgreSQL с несколькими дочерними элементами может ухудшить производительность? - PullRequest
1 голос
/ 08 декабря 2011

У меня есть таблица журнала, которая наследуется несколькими таблицами:

CREATE TABLE log (
    IdGlobal uuid NOT NULL DEFAULT uuid_generate_v1(),
    Version integer NOT NULL DEFAULT 0,
    ChangeDate TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
    IsDeleted bool DEFAULT false
);

CREATE TABLE Customer (
    Id SERIAL PRIMARY KEY,
    Code text NOT NULL UNIQUE,
    Name text NOT NULL,
) INHERITS (log);

Тем не менее, мне интересно, повлияет ли это на производительность. База данных предназначена для разработки приложения SASS (ранняя стадия) и будет иметь 1 схему = 1 компания.

Я понимаю, что главное преимущество postgres заключается в разделении, но мой вариант использования больше связан с типичным ООП.

Увеличение размера таблицы журнала навредит мне в долгосрочной перспективе? Где я положил индексы? У родителя или у ребенка? (Я буду искать по IdGlobal & version)

1 Ответ

0 голосов
/ 17 января 2012

Размер таблицы журнала не повлияет на запросы к таблице Customer, на самом деле это другой путь: по умолчанию SELECT, UPDATE и DELETE из таблицы журнала также будут работать с таблицей Customer, если только вы не укажете предложение ONLY,т. е. журнал SELECT * FROM ONLY;

Индексы и ограничения (уникальный, первичный и внешний ключ) применяются только к одной таблице, а не ко всей иерархии наследования, поэтому, к сожалению, вам необходимо создать их отдельно дляродительские и для дочерних таблиц.Это также означает, что у вас не может быть уникального индекса, который охватывает все таблицы в иерархии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...