
# 概述
DWS不仅支持查询物化视图，还支持查询重写。物化视图查询重写，让用户在不改变业务情况下自动使用物化视图加速查询执行。通过查询重写功能，物化视图可以像索引一样添加或删除，不会影响业务。
#### 使用场景
物化视图查询重写，能够避免查询中复杂的关联、聚集以及表达式运算操作。
- 文本匹配查询重写，查询与物化视图的定义基本一致（允许格式、注释有差异）。因为能够支持cte，窗口函数等复杂查询，复杂查询性能较差时可以通过定义与查询语句相同的物化视图，加快查询。
- 结构匹配查询重写，可以匹配多种语句，适合用于多表关联关系不变，过滤条件以及输出列变化的场景。
默认情况下，物化视图必须有效才能进行查询重写。也可以设置CREATE MATERIALIZED VIEW语法中force_rewrite_timeout参数，设置物化视图失效指定的时间内，依然可以强制重写。
#### 物化视图查询重写方式
DWS支持以下两种方式的物化视图查询重写：
- 基于文本匹配查询重写 当查询和物化视图的SQL或者语法树匹配时，可以使用物化视图进行查询改写。
  
- 基于结构匹配查询重写 提取查询的特定结构进行重写。目前针对查询中投影、过滤条件、Join和聚合部分与物化视图进行匹配和重写。
  
 
#### 设置物化视图查询重写
DWS通过GUC参数[mv_rewrite_rule](https://support.huaweicloud.com/devg-911-dws/dws_04_0936.html#ZH-CN_TOPIC_0000002202095025__section1683821583115)控制查询重写方式。
