【发布时间】:2019-11-08 18:14:55
【问题描述】:
我可能想多了,但我正在考虑优化大型数据集的机会。我有一个表模式,其内容主要通过其主键和状态字段获取。如果我以某种方式将状态字段包含为复合主键的一部分以加快搜索速度,是否可以进行任何优化?因此,例如,我的表架构可能类似于:
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 = ...
大型数据集调整架构是否有任何优势:
PRIMARY KEY (object_id, status)
此外,我与此表连接的表也始终包含该状态过滤器。然后我应该将外键约束调整为:
FOREIGN KEY (object_id, status) REFERENCES object_t (object_id, status)
这里是否有任何优化,或者只是尽可能地使用 object_id 和 status 过滤器?
【问题讨论】:
标签: postgresql database-design schema primary-key