【发布时间】:2018-07-25 08:57:50
【问题描述】:
我有一个 postgres 表(我们称这个表为 Events),它带有一个指向另一个表的复合外键(我们称这个表为 Logs)。事件表如下所示:
CREATE TABLE Events (
ColPrimary UUID,
ColA VARCHAR(50),
ColB VARCHAR(50),
ColC VARCHAR(50),
PRIMARY KEY (ColPrimary),
FOREIGN KEY (ColA, ColB, ColC) REFERENCES Logs(ColA, ColB, ColC)
);
在这种情况下,我知道我可以通过主键有效地搜索事件,并加入日志。
我感兴趣的是这个外键是否在事件表上创建了一个索引,即使没有加入也很有用。例如,以下查询会从 FK 中受益吗?
SELECT * FROM Events
WHERE ColA='foo' AND ColB='bar'
注意:我已经针对与此非常相似的情况运行了 POSTGRES EXPLAIN,并且看到查询将导致全表扫描。我不确定这是否是因为 FK 对此查询没有帮助,或者我的数据量很小并且在我当前的规模下扫描效率更高。
【问题讨论】:
标签: postgresql database-performance