Не уверен, что это возможно в PostgreSQL 9.3+, но я хотел бы создать уникальный индекс для неуникального столбца. Для таблицы типа:
CREATE TABLE data (
id SERIAL
, day DATE
, val NUMERIC
);
CREATE INDEX data_day_val_idx ON data (day, val);
Я хотел бы иметь возможность [быстро] запрашивать только отдельные дни. Я знаю, что могу использовать data_day_val_idx
для облегчения поиска отдельных элементов, но кажется, что это добавляет дополнительные накладные расходы, если количество уникальных значений существенно меньше, чем количество строк в покрытиях индекса. В моем случае примерно 1 раз в 30 дней.
Является ли мой единственный вариант создать реляционную таблицу для отслеживания только уникальных записей? Мышление:
CREATE TABLE days (
day DATE PRIMARY KEY
);
И обновлять это с помощью триггера каждый раз, когда мы вставляем в данные.