Sobre a otimização (tuning) de consultas em bancos 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:
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