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
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
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 materializadasdeste 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:
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.
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.
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.
O recurso de reescrita de consultas combinado com a criação automática de visões materializadas acelera a autonomia do banco de dados.