Caio recebeu, em seu departamento, um grande número de chamados que relatavam uma lentidão demasiada na execução das consultas no banco de dados que ele mantinha. Então, ele iniciou a busca da solução pelo algoritmo de otimização algébrico heurístico, intrínseco a seu banco de dados. Esse algoritmo é executado em seis etapas e trabalha com algumas regras básicas, que, na maioria das vezes, conseguem melhorar a performance das consultas.
Ao analisar as etapas do algoritmo de otimização, Caio identificou um erro na etapa de:
-
A desmembramento das operações de seleção com condições conjuntivas em uma cascata de operações de seleção;
-
B movimentação das operações de seleção o mais baixo possível na árvore de consulta que for permitido pelos atributos envolvidos na condição de seleção;
-
C reorganização dos nós folhas da árvore de consulta, posicionando as relações com as operações de projeção mais restritivas;
-
D combinação de um produto cartesiano com uma seleção subsequente na árvore de consulta para uma operação de junção a ser executada;
-
E desmembramento e movimentação da lista de atributos de projeção para o mais baixo possível, criando novas operações de projeção, conforme a necessidade.