Sobre a otimização (tuning) de consultas em bancos de dados...

Próximas questões
Com base no mesmo assunto
Q3506012 Banco de Dados

Sobre a otimização (tuning) de consultas em bancos de dados relacionais, avalie as afirmações apresentadas a seguir:



I. Consultas com múltiplas condições de seleção conectadas pelo operador lógico OR podem não utilizar índices eficientemente e podem ser otimizadas dividindo-as em uma união (UNION) de consultas separadas.


II. O uso desnecessário da cláusula DISTINCT pode ser evitado sem alterar o resultado em alguns casos, o que é benéfico, pois DISTINCT frequentemente causa uma operação de ordenação onerosa.


III. Consultas aninhadas correlacionadas são sempre mais eficientes do que suas versões não aninhadas ou reescritas como JOINs, pois o SGBD otimiza sua execução avaliando a subconsulta apenas uma vez.


IV. Expressões aritméticas ou comparações envolvendo valores NULL ou substrings em cláusulas WHERE podem, em alguns casos, impedir que o otimizador de consulta utilize índices relevantes.



É correto o que se afirma em:

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B – I, II e IV, apenas.

Tema central: A questão aborda otimização (tuning) de consultas SQL, conhecimento essencial para quem se prepara para concursos em TI, pois impacta diretamente o desempenho dos bancos de dados relacionais. O entendimento sobre índices, operações de filtragem e uso de cláusulas como DISTINCT é fundamental.

Resumo teórico: A otimização de consultas visa reduzir o tempo de resposta e o consumo de recursos. Estratégias comuns incluem:

  • Uso eficiente de índices para acelerar buscas.
  • Atenção com operadores lógicos, como OR, que podem inviabilizar o uso de índices.
  • Evitar DISTINCT desnecessário, pois ele exige ordenação ou eliminação de duplicatas, onerando a consulta.
  • Cuidado com expressões que dificultam a filtragem por índice, como funções ou comparações com NULL.

Fontes: Elmasri & Navathe, "Sistemas de Banco de Dados"; Oracle Database SQL Tuning Guide.

Justificativa da alternativa B:

I. Correta. Consultas com OR podem não usar índices eficientemente. Dividir em UNION de seleções simples pode melhorar o desempenho.
II. Correta. O DISTINCT pode ser evitado se não houver duplicidade natural, poupando recursos.
IV. Correta. Expressões com NULL, substrings ou funções sobre colunas frequentemente impedem o uso de índices.

III. Incorreta. Subconsultas correlacionadas não são sempre mais eficientes; pelo contrário, podem ser mais lentas, pois são avaliadas repetidamente. Frequentemente, reescrevê-las como JOINs ou subconsultas não correlacionadas é mais eficiente.

Por que as outras alternativas estão erradas?

  • A – Inclui a afirmação III, que está errada.
  • C – Apenas a III, que está incorreta.
  • D – Inclui III, errada, e omite I, que está correta.
  • E – Apenas I, mas II e IV também estão corretas.

Dicas de interpretação: Procure palavras absolutas como “sempre” ou “nunca”, que geralmente indicam afirmações erradas em concursos. Analise se o comando SQL citado realmente tem o efeito afirmado e, sempre que possível, relacione com a prática real dos SGBDs.

Gostou do comentário? Deixe sua avaliação aqui embaixo!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo