Questão FC369695
João está analisando o plano de execução de uma consulta SQL complexa e percebe que o seu desempenho é insatisfatório. Após uma análise detalhada, ele identifica que a consulta est
Otimização (Tuning) em Banco de Dados
FGV · 2024
João está analisando o plano de execução de uma consulta SQL complexa e percebe que o seu desempenho é insatisfatório. Após uma análise detalhada, ele identifica que a consulta está usando, na cláusula “WHERE”, uma função em uma coluna da tabela, o que está afetando negativamente a sua execução.
Com a intenção de melhorar o desempenho da consulta, João deverá:
- utilizar um índice bitmap para a coluna em questão;
- criar um índice convencional na coluna afetada pela função;
- aumentar a alocação de memória para o SGA (System Global Area);
- implementar um índice baseado em função (Function-Based Index) na coluna que utiliza a função;
- utilizar o Oracle Performance Analyzer para resolver o problema de gargalo de desempenho apresentado.
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
Implementar um índice baseado em função (Function-Based Index) faz com que o SGBD armazene no índice os **resultados pré-calculados** da expressão aplicada à coluna, em vez dos valores crus. Assim, quando a cláusula WHERE usa essa mesma função/expression, o otimizador pode consultar o índice diretamente, evitando varredura completa da tabela.
Para funcionar, a expressão da consulta deve ser **idêntica** à do índice. Ex.: após criar CREATE INDEX idx_up ON clientes (UPPER(nome)); uma consulta com WHERE UPPER(nome) = 'ANA' poderá usar o índice.
Essa técnica melhora desempenho de buscas que dependem de transformações (ex.: funções de string, data ou truncamento). Atenção à determinismo da função e à manutenção extra do índice em operações DML.
Conteúdo do catálogo FC Concursos · Atualizado em