FC ConcursosFC Concursos

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á:

  1. utilizar um índice bitmap para a coluna em questão;
  2. criar um índice convencional na coluna afetada pela função;
  3. aumentar a alocação de memória para o SGA (System Global Area);
  4. implementar um índice baseado em função (Function-Based Index) na coluna que utiliza a função;
  5. 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

Continue aprendendo