1

在视图上运行查询或在带有 where 子句的关联视图查询上运行查询之间是否存在(大)性能差异?

例如

CREATE VIEW v_comedies AS
    SELECT *
    FROM films
    WHERE kind = 'Comedy';

这些查询之间是否存在性能差异?

1: SELECT * FROM v_comedies WHERE filmName LIKE 'Bat%'
2: SELECT * FROM films WHERE kind = 'Comedy' AND filmName LIKE 'Bat%'
4

1 回答 1

3

通常,PostgreSQL 中的视图存储为 SELECT 查询,因此您问题中的两个查询之间的性能应该相同。

如果电影表不经常更新,比如一天只更新一次,但查询执行频繁,则可以使用物化视图。它的行为类似于使用 CTAS (CREATE TABLE ... AS ...) 创建的表,但也会存储用于创建它的 SQL 查询,因此您可以按需刷新物化视图。

通常,视图用于连接,而不是用于选择。

于 2013-09-13T20:50:27.837 回答