Plano de Execução

Execução da consulta

Um SGDB executa um query seguindo o seguinte fluxo:
  1. consultar os dados da tabela 1
  1. consultar os dados da tabela 2
  1. união dos resultados das duas consultas (junção 1)
  1. consultar os dados da tabela 3
  1. união da junção 1 com o resultado da consulta na tabela 3;
  1. repetindo até chegar ao resultado final;
notion image

Como aprimorar

Deve ser avaliado:
  • operações com alto percentual de consumo;
  • operações do tipo SCAN;
  • seta muito grossa;
  • lookup (bookmark, key, RID);
  • sorting.

Operações com alto percentual de custo

Olhando o plano de execução é possível ter noção de quais operações são executadas em uma consulta. Com isso é possível identificar as operações que mais demandam processamento e tomar alguma medida sobre elas.

Operações do tipo SCAN (leituras sequênciais)

Caso a tabela tenha poucos registros um SCAN pode ter uma performance melhor. Mas deve ser avaliado com cuidado se não vale a pena implementar um índice à tabela.

Seta muito grossa

Utilizando um software para verificar o plano de execução da query, é possível visualizar o tamanho do retorno de alguma subconsulta da query. Para melhorar uma operação com muitos dados (uma seta muito grossa), devemos requisitar menos colunas e adicionar filtros às subquerys. Quanto mais internos forem os filtros de uma consulta, melhor.

Lookup

Sorting

Operações se ordenação são sempre muito custosas. Se puder não usar um order by, melhor.