目录
(一)前言
Azure Synapse 中适用于专用 SQL 池的具体化视图为复杂的分析查询提供一种低维护的方法来加速查询性能,且无需对查询进行任何更改。 本文讨论了使用具体化视图的一般指南。
(二)具体化视图与标准视图
1. 两者的定义上区别
Azure Synapse 中的专用 SQL 池支持标准视图和具体化视图。 两者都是用 SELECT 表达式创建并以逻辑表的形式呈现给查询的虚拟表。 视图封装了常见数据计算的复杂性,并为计算更改添加了一个抽象层,因此无需重写查询。
每次使用标准视图时,该视图都会计算其数据。 磁盘上不存储任何数据。 用户通常使用标准视图作为一个有助于组织专用 SQL 池中的逻辑对象和查询的工具。 若要使用标准视图,查询需要直接引用它。
和表一样,具体化视图在专用 SQL 池中预先计算、存储和维护其数据。 每次使用具体化视图时都不需要重新计算。 这就是为什么使用具体化视图中的全部或部分数据的查询可以获得更快的性能。 更有利的是,查询可以使用具体化视图而无需直接引用它,因此不需要更改应用程序代码。
标准视图上的大多数要求仍然适用于具体化视图。
| 比较 | 查看 | 具体化视图 |
|---|---|---|
| 查看定义 | 存储在专用 SQL 池中。 | 存储在专用 SQL 池中。 |
| 查看内容 | 在每次使用视图时生成。 | 在创建视图期间进行预处理并存储在专用 SQL 池中。 随着数据添加到基础表中而更新。 |
| 数据刷新 | 始终更新 | 始终更新 |
| 从复杂查询检索视图数据的速度 | 慢 | Fast |
| 额外存储 | 否 | 是 |
| 语法 | CREATE VIEW | CREATE MATERIALIZED VIEW AS SELECT |
2. 具体化视图创建方式
本段落说明如何在 Azure Synapse Analytics 中使用 CREATE MATERIALIZED VIEW AS SELECT T-SQL 语句开发解决方案。
具体化视图会保留从视图定义查询返回的数据,并在基础表中的数据更改时自动更新。 它提高了复杂查询(通常是使用联接和聚合的查询)的性能,同时提供了简单的维护操作。 由于具体化视图具有执行计划自动匹配功能,因此无需在查询中引用它,优化器即会考虑将此视图作为替换项。 通过使用这一功能,数据工程师可以将具体化视图作为改进查询响应时间的机制来实现,而不必再更改查询。
(1)语法
CREATE MATERIALIZED VIEW [ schema_name. ] materialized_view_name
WITH (
<distribution_option>
)
AS <select_statement>
[;]
<distribution_option> ::=
{
DISTRIBUTION = HASH ( distribution_column_name )
| DISTRIBUTION = ROUND_ROBIN
}
<select_statement> ::=
SELECT select_criteria
备注
Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。
(2)参数
schema_name
视图所属架构的名称。
materialized_view_name
视图名称。 视图名称必须符合有关标识符的规则。 可以选择是否指定视图所有者名称。
分布选项
仅支持 HASH 和 ROUND_ROBIN 分步。
select_statement
具体化视图定义中的 SELECT 列表需要至少满足以下两个条件之一:
- SELECT 列表包含聚合函数。
- 具体化视图定义使用了 GROUP BY,并且 SELECT 列表包括 GROUP BY 中的所有列。 在 GROUP BY 子句中最多可以使用 32 列。

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



