比方说,我有一个表foo:,享有业绩的影响和指数
CREATE TABLE FOO (
FOO_ID INTEGER,
STATUS INTEGER,
RATING INTEGER,
PRIMARY KEY ("FOO_ID")
)
其中状态可以是0到5之间,并且表充满了行。
让我们那么说我创建的状况的指标,另外在评价:
CREATE INDEX ON FOO (STATUS);
CREATE INDEX ON FOO (RATING);
现在,假设我有一个观点:
CREATE VIEW FOO_THREE_VIEW AS
SELECT *
FROM FOO
WHERE STATUS = 3;
我想在FOO记录即:STATUS = 3
和RATING = 5
。下面的查询会给我的结果我想:
SELECT * FROM FOO WHERE STATUS = 3 AND RATING = 5;
但是,下面的查询也会给我我想要的结果:
SELECT * FROM FOO_THREE_VIEW WHERE RATING = 5;
两个查询,是否有性能差异? 第一个查询是否受益于这两个索引?第二个查询是否受益于这两个索引?我无法在视图上创建索引来帮助改善性能,对吗?如果在两列上都有索引,如CREATE INDEX ON FOO (STATUS, RATING)
而不是两个单独的索引,那么两者的性能如何变化?
我明白这个问题可以是一个通用的SQL问题,但是当需要规范时,我想知道它在PostgreSQL中的具体工作方式。