

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 查询实体化视图
<a name="querying-materialized-views"></a>

当您查询实体化视图时，您可以直接访问实体化视图中预先计算的数据。您可以通过引用实体化视图名称作为数据来源，在任何 SQL 查询中使用实体化视图，就像表或标准视图一样。

例如，请考虑本指南[创建实体化视图](creating-materialized-views.md)部分中的 `mv_total_orders` 实体化视图示例插图。如果您想构建 `mv_total_orders` 查询（返回订单总额超过 500 美元的客户列表），则可以运行以下标准查询：

```
statement. SELECT c.cust_id,  
       c.first_name,  
       sum(o.amount) as total_amount
FROM orders o  
JOIN customer c 
  ON c.cust_id = o.customer_id
GROUP BY c.cust_id,  
         c.first_name
HAVING sum(o.amount) > 500;
```

但前面的查询并未针对速度进行优化。我们建议您改为运行以下查询：

```
SELECT cust_id,
       first_name,
       total_amount
FROM mv_total_orders
WHERE total_amount > 500;
```

推荐的查询运行速度要快得多，因为查询结果是预先计算的，并且不需要访问基础表（客户和订单）。Amazon Redshift 可以直接从 `mv_total_orders` 返回结果。

**重要提示**  
当查询访问实体化视图时，查询只查看最近刷新时存储在实体化视图中的数据。因此，查询可能看不到实体化视图相应基表中的所有最新更改。