A reescrita de consultas é uma transformação tipicamente automática que leva um conjunto de tabelas, visualizações e/ou consultas de banco de dados, geralmente índices, frequentemente estatísticas de dados e consultas e outros metadados, e produz um conjunto de consultas diferentes, que produzem os mesmos resultados, mas Execute com melhor desempenho (por exemplo, mais rápido ou com menor uso da memória). A reescrita da consulta pode ser baseada em álgebra relacional ou em uma extensão (por exemplo, álgebra relacional de vários e vários premiados com classificação, agregação e predicados de três valores, isto é, nulos, como no caso do SQL). As regras de equivalência da álgebra relacional são exploradas; em outras palavras, diferentes estruturas de consulta e pedidos podem ser matematicamente comprovadas para produzir o mesmo resultado. Por exemplo, a filtragem nos campos A e B, ou a união cruzada R e S pode ser feita em qualquer ordem, mas pode haver uma diferença de desempenho. Várias operações podem ser combinadas e as ordens de operação podem ser alteradas.
O resultado da reescrita da consulta pode não estar no mesmo nível de abstração ou interface de programação de aplicativos (API) como o conjunto original de consultas (embora muitas vezes seja). Por exemplo, as consultas de entrada podem estar em álgebra ou SQL relacional, e as consultas reescritas podem estar mais próximas da representação física dos dados, por exemplo operações de matriz. A reescrita de consultas também pode envolver a materialização de visões e outras subconsações; Operações que podem ou não estar disponíveis para o usuário da API. A transformação de reescrita de consulta pode ser auxiliada pela criação de índices a partir dos quais o otimizador pode escolher (alguns sistemas de banco de dados criam seus próprios índices se forem considerados úteis), exigindo o uso de índices específicos, criando visões materializadas e/ou desnormalizadas ou ajudando um sistema de banco de dados a se reunir As estatísticas sobre o uso de dados e consultas, pois a otimização depende de padrões em dados e uso típico de consulta.
A reescrita da consulta pode ser baseada em regras ou baseada em otimizador. Algumas fontes discutem a reescrita da consulta como uma etapa distinta antes da otimização, operando no nível da API de álgebra acessível ao usuário (por exemplo, SQL). [Citação necessária]
Existem outros conceitos em grande parte não relacionados também nomeados de maneira semelhante, por exemplo, reescrita de consultas por mecanismos de pesquisa.