Возможно, я слишком много думаю, но я думаю о возможностях оптимизации большого набора данных.У меня есть схема таблицы, содержимое которой в основном захватывается с помощью своего первичного ключа и поля состояния.Можно ли провести какую-либо оптимизацию, если я каким-то образом включу поле состояния в составной первичный ключ для ускорения поиска?Так, например, моя схема таблицы может выглядеть примерно так:
CREATE TABLE object_t (
object_id SERIAL PRIMARY KEY NOT NULL,
status VARCHAR CHECK (status ~ '(Astatus|Bstatus|Cstatus|Dstatus)'),
contents TEXT
);
Мои запросы почти всегда будут выглядеть примерно так:
SELECT * FROM object_t WHERE search condition AND status = ...
Есть ли здесь преимущество для больших наборов данных для настройки схемы наhave:
PRIMARY KEY (object_id, status)
Кроме того, таблицы, к которым я присоединяюсь, также всегда включают этот фильтр состояния.Должен ли я затем настроить ограничения внешнего ключа следующим образом:
FOREIGN KEY (object_id, status) REFERENCES object_t (object_id, status)
Есть ли здесь какая-то оптимизация, или она просто работает с object_id и фильтром состояния настолько хорошо, насколько это возможно?