Otimizador de consulta

Definição - o que significa o Query Optimizer?

Um otimizador de consulta é um componente crítico do sistema de gerenciamento de banco de dados (DBMS) que analisa consultas de Structured Query Language (SQL) e determina mecanismos de execução eficientes. Um otimizador de consulta gera um ou mais planos de consulta para cada consulta, cada um dos quais pode ser um mecanismo usado para executar uma consulta. O plano de consulta mais eficiente é selecionado e usado para executar a consulta.

Os usuários do banco de dados normalmente não interagem com um otimizador de consulta, que funciona em segundo plano.

Definirtec explica o Query Optimizer

As consultas SQL podem ser instruções simples ou complexas. Cada instrução SQL requer o uso mínimo de recursos valiosos, como leituras de disco e memória do servidor. O otimizador de consulta garante isso, bem como a execução acelerada de cada consulta SQL. Por exemplo, um otimizador de consulta pode gerar uma série de planos de consulta com base nos custos de recursos. Um plano de consulta pode envolver a leitura de uma tabela para recuperar um subconjunto de seus dados, enquanto outro pode envolver o uso de índices de tabela para leitura rápida de dados. Eles são conhecidos como otimizadores baseados em custos.

Um otimizador de consulta pode selecionar planos de consulta diferentes para a mesma consulta, dependendo das circunstâncias ambientais. Por exemplo, um usuário executa uma consulta que seleciona aproximadamente metade dos dados de uma tabela. O usuário executa a consulta quando o servidor está sobrecarregado com várias conexões simultâneas. Nesse cenário, o otimizador de consulta pode decidir usar um plano de consulta que chama os índices da tabela criada para satisfazer a consulta, com base em recursos limitados. Isso garante o esgotamento mínimo do servidor pela consulta. Executando a mesma consulta em outro momento com mais recursos, o otimizador de consulta pode determinar que a limitação de recursos não é um problema. Nesse caso, os índices da tabela não seriam usados ​​e o otimizador de consulta permitiria o carregamento completo da tabela na memória do servidor.