Gggg
Introdução a Banco de Dados – DCC 011
Processo de Execução de uma Consulta
Introdução a Banco de Dados – DCC 011
1
Otimização de Consultas SQL
Em algumas linguagens de consulta, a estratégia de execução é definida pela maneira como o usuário (ou programador) expressa a consulta Em SQL, que é uma linguagem declarativa, apenas os resultados desejados são especificados Portanto, a otimização de consultas é necessária em SGBDs relacionais baseados em SQL
Introdução a Banco de Dados – DCC 011
Otimização de Consultas SQL
Passos principais
Tradução da consulta SQL para a álgebra relacional Otimização do resultado
Estratégias de otimização
Otimização baseada em heurísticas Otimização baseada na estimativa de custo da consulta Otimização semântica
Introdução a Banco de Dados – DCC 011
2
Tradução de Consultas SQL para Expressões da AR
Consultas SQL são decompostas em blocos Cada bloco é transformado em uma expressão da álgebra relacional Os blocos são otimizados internamente, levandose em consideração a ordem de execução entre eles Um bloco contém um único comando SELECTFROM-WHERE, incluindo cláusulas GROUP BY e HAVING, se houver
Introdução a Banco de Dados – DCC 011
Exemplo de Tradução de uma Consulta SQL
SELECT FROM WHERE LNAME, FNAME EMPLOYEE SALARY > ( SELECT FROM WHERE MAX (SALARY) EMPLOYEE DNO = 5);
SELECT FROM WHERE
LNAME, FNAME EMPLOYEE SALARY > C
SELECT FROM WHERE
MAX (SALARY) EMPLOYEE DNO = 5
πLNAME, FNAME (σSALARY>C(EMPLOYEE))
MAX SALARY
(σDNO=5 (EMPLOYEE))
Introdução a Banco de Dados – DCC 011
3
Otimização Baseada em Heurísticas
Consultas são representadas internamente na forma de uma árvore ou grafo
Árvores de consulta são preferidas para a otimização pois determinam a ordem de execução das operações Grafos de consulta indicam apenas as operações e os respectivos operandos envolvidos portanto, existe apenas um grafo correspondente a cada consulta