banco de dados
PROJEÇÃO e de conjunto
• Uma operação PROJEÇÃO é simples de se implementar se incluir uma chave da relação R, pois nesse caso o resultado da operação terá o mesmo número de tuplas que R, mas com apenas os valores para os atributos em em cada tupla. Se não incluir uma chave de R, as tuplas duplicadas devem ser eliminadas. • Operações de conjunto – UNIÃO,
INTERSECÇÃO, DIFERENÇA DE CONJUNTO E
PRODUTO CARTESIANO – às vezes são dispendiosas de se implementar. Em particular , a operação de PRODUTO
CARTESIANO R x S é muito dispendiosa porque seu resultado inclui um registro para cada combinação de registros de R e S.
Implementando operações de agregação e JUNÇÃO EXTERNA
• Os operadores de agregação (MIN, MAX, COUNT,
AVERAGE, SUM), quando aplicados a uma tabela inteira, podem ser calculados por uma varredura de tabela ou usando um índice apropriado, se houver. Por exemplo, considere a seguinte consulta SQL:
SELECT MAX(Salario)
FROM FUNCIONARIO;
Se houver um índice de B+- tree (crescente) em
Salario para a relação FUNCIONARIO, então otimizador pode decidir sobre o uso do indice
Salario para procurar o maior valor de Salario no indice, seguindo o ponteiro mais a direita em cada nó indice da raiz ate a folha mais à direita.
Esse nó incluirá o maior valor de Salario como sua ultima entrada. Na maioria dos casos, isso seria mais eficiente do que uma varredura completa da tabela FUNCIONARIO, pois nenhum registro real precisa ser recuperado.
A função MIN pode ser tratada de maneira semelhante, com a exceção de que o ponteiro mais a esquerda no indice é seguido da raiz até a folha mais à esquerda. Esse nó incluiria o menor valor de Salario como sua primeira entrada. O índice também poderia ser usado para as funções de agregação AVERAGE e SUM, mas somente se for um índice denso – ou seja, se houver uma entrada de índice para cada registro no arquivo principal. Nesse caso o calculo