

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Reescrita automática de consultas
<a name="automatic-query-rewriting"></a>

O Amazon Redshift pode reescrever automaticamente consultas SQL que não fazem referência explicitamente a visões materializadas existentes usadas para melhorar a performance. A consulta direta de uma visão materializada reduz o tempo de processamento da consulta, mas a instrução da consulta deve ser modificada. Se você usa visões materializadas para acelerar as consultas, é importante considerar como usar visões materializadas de forma sistemática e automática para responder às consultas. É possível usar a reescrita transparente para adicionar ou excluir visões materializadas da mesma forma que um índice, sem afetar as instruções SQL existentes. O Amazon Redshift usa somente visualizações up-to-date materializadas quando reescreve consultas automaticamente.

## Como funciona a reescrita de consultas
<a name="query-rewriting-works"></a>

Considere a consulta SQL a seguir. A consulta une duas tabelas: cliente (mais de 10 milhões de linhas) e pedidos (mais de 10 bilhões de linhas):

```
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;
```

Essa consulta une duas tabelas grandes, aplica uma agregação de soma na coluna `o.amount` e, em seguida, filtra os resultados para exibir somente os clientes que fizeram pedidos superiores a USD 500. Essa consulta pode consumir muitos recursos.

Por exemplo, considere a visão materializada `mv_total_orders` da seção [Criar visualizações materializadas](creating-materialized-views.md)deste guia. Depois que essa visualização é criada, o Amazon Redshift reescreve automaticamente a consulta anterior da seguinte forma:

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

Essa nova consulta é executada muito mais rápido porque usa uma visão materializada em vez de unir duas tabelas grandes.

A reescrita de consultas levou à adoção mais ampla de visões materializadas pelos seguintes motivos:

1. As visões materializadas oferecem suporte à reescrita transparente das consultas. A reescrita da consulta transforma uma instrução SQL expressa em termos de tabelas em uma instrução acessando uma ou mais visões materializadas. Essa transformação é transparente para o usuário final, não exigindo intervenção nem referência à visão materializada na instrução SQL.

1. As visões materializadas simplificam a aplicação de conjuntos de resultados comuns em cache e oferecem suporte a otimizações de consultas cruzadas, como pré-computação.

1. Em cenários de data warehouses e integração de dados, as visões materializadas podem materializar resultados de tabelas externas para ocultar as diferenças entre várias fontes de dados, implementando réplicas locais ou dividindo leitura/gravação.

1. O recurso de reescrita de consultas combinado com a criação automática de visões materializadas acelera a autonomia do banco de dados.