Paul Wall Asked:2020-01-31 20:59:44 +0800 CST2020-01-31 20:59:44 +0800 CST 2020-01-31 20:59:44 +0800 CST postgres 视图表 772 我读了一本书,慢慢地尝试应用知识。我在视图迁移中创建了一个表,以便稍后引用它,而不是使用 join/groupBy/OrderBy 进行一堆查询。 这是正常的做法吗?我可以根据正常创建的字段对这个虚拟表进行排序吗?我可以执行任何更新/删除操作吗? postgresql 1 个回答 Voted Best Answer Fat-Zer 2020-02-02T23:42:24+08:002020-02-02T23:42:24+08:00 这是正常的做法吗? 没关系,但请记住,常规视图只是存储请求并用其名称替换请求,因此它只是语法糖和 API 兼容性。它没有给出任何优化,所有//join每次访问都会重新执行。也有,但这本质上已经是一张临时表,完全不同。group ByOrder ByMATERIALIZED VIEW 我可以根据正常创建的字段对这个虚拟表进行排序吗? 取决于“正常”的定义。只是补充一下ORDER BY- 是的,这是可能的。在视图上创建索引 - 不。因此排序速度将取决于是否可以在源表上使用索引。 我可以执行任何更新/删除操作吗? 一般来说,没有。但在一般情况下,如果视图是“可更新的”(为此,必须满足某些条件- 不JOIN,GROUP BY等等UNION)postgresql 允许您自动执行此操作。您还可以为视图显式创建INSTEAD OF-triggers,在这种情况下,可以使任何视图与表几乎无法区分给外部用户。
没关系,但请记住,常规视图只是存储请求并用其名称替换请求,因此它只是语法糖和 API 兼容性。它没有给出任何优化,所有//
join
每次访问都会重新执行。也有,但这本质上已经是一张临时表,完全不同。group By
Order By
MATERIALIZED VIEW
取决于“正常”的定义。只是补充一下
ORDER BY
- 是的,这是可能的。在视图上创建索引 - 不。因此排序速度将取决于是否可以在源表上使用索引。一般来说,没有。但在一般情况下,如果视图是“可更新的”(为此,必须满足某些条件- 不
JOIN
,GROUP BY
等等UNION
)postgresql 允许您自动执行此操作。您还可以为视图显式创建INSTEAD OF
-triggers,在这种情况下,可以使任何视图与表几乎无法区分给外部用户。