【发布时间】:2021-02-01 16:24:42
【问题描述】:
在使用时间戳/电压表达式的保存视图中如何表示数据是否有标准?例如,假设我有 SQL 查询:
SELECT person_id, name, NOW() as now FROM table
NOW() 函数每次运行时都会有不同的值。将上述内容保存到视图时,数据是否存储为:
person_id name now
1 Bob 2020-01-01T01:01:01
2 Billy 2020-01-01T01:01:01
3 Barbara 2020-01-01T01:01:01
还是存储为:
person_id name now
1 Bob =NOW()
2 Billy =NOW()
3 Barbara =NOW()
还是依赖于数据库实现,没有标准?
【问题讨论】:
-
一个视图没有被“保存”,它只是一个选择。你为什么不简单地尝试一下?
-
@dnoeth 是的,我尝试了一个表和一个视图,该表被永久存储,视图是按需计算的。那么物化视图呢?
-
您使用的是哪个 dbms?
-
@jarlh 对我来说这更像是一个概念性问题,但为了测试它我使用的是 mysql(它没有物化视图)
-
您存储值,例如表中的时间戳(使用 INSERT/UPDATE)。当您选择时,您将获得存储的值。您还可以选择一个函数(例如 NOW()),您将获得当前时间戳。视图只是一个预定义的选择。物化视图是一种优化技巧,其中准备和存储视图选择以便更快地访问 - 但您仍将获得作为选择的结果。
标签: sql