小编Var*_*ath的帖子

Postgres 会执行在视图中未选择的计算列的计算吗?

我试图了解从视图中选择数据的性能影响,其中视图中的一列是原始表中其他数据的函数。

无论计算列是否在所选列的列表中,是否都会执行计算?

如果我有一张桌子并且视图像这样声明

CREATE TABLE price_data (
    ticker     text,          -- Ticker of the stock
    ddate      date,          -- Date for this price
    price      float8,        -- Closing price on this date
    factor     float8         -- Factor to convert this price to USD
);

CREATE VIEW prices AS 
    SELECT ticker, 
           ddate,
           price,
           factor,
           price * factor as price_usd
    FROM price_data
Run Code Online (Sandbox Code Playgroud)

乘法类似下面的查询来执行?

select ticker, ddate, price, factor from prices
Run Code Online (Sandbox Code Playgroud)

是否有参考以一种方式或另一种方式保证这一点?我正在阅读有关 Postgres 规则系统的文档,但我认为答案确实在于优化器,因为规则系统文档中没有任何内容表明它不会被选中。

我怀疑在上述情况下没有执行计算。我将视图更改为使用除法而不是乘法,并将0for插入factorprice_data. 上面的查询没有失败,但如果修改查询以选择计算列,则修改后的查询失败。

有什么方法可以理解在执行 a 时 …

postgresql view

8
推荐指数
1
解决办法
718
查看次数

标签 统计

postgresql ×1

view ×1