Questão nº 29

Questão de Banco de Dados · FGV SEFAZ-MG 2022 - Tarde (nº 29)

FGV2022Auditor Fiscal - Tecnologia da InformaçãoBanco de Dados
Gabarito: Ever comentário ↓

A Linguagem padrão de banco de dados Structured Query Language (SQL) tem como uma de suas principais vantagens a não necessidade de informar exatamente os algoritmos e métodos que devem ser usados para obter os dados do banco de dados. Basta passar a instrução SQL e, assim, o otimizador de consultas irá buscar os melhores algoritmos e métodos para retornar os dados.

A sintonia fina ou tuning de consultas consiste em utilizar algumas funções, organizar melhor a instrução SQL na clausula WHERE, por exemplo, para obter o melhor desempenho de uma consulta.

Com relação à sintonia fina ao utilizar um banco de dados Oracle, assinale V para a afirmativa verdadeira e F para a falsa.

( ) Quando possível, é melhor o uso do UNION ALL em vez de UNION devido ao fato de o UNION ter um processo de remoção de linhas duplicadas.
( ) Quando possível, é melhor utilizar IN em vez de EXISTS, visto que EXISTS verifica apenas que os valores existem e o IN verifica valores reais.
( ) Quando possível, é melhor utilizar EXISTS, que verifica a existência de linhas retornadas por uma subconsulta em vez de DISTINCT, que recupera todas as linhas para em seguida suprimir as duplicadas.
( ) Quando possível, é melhor utilizar variáveis BIND nas instruções SQL, uma vez que o software de banco de dados coloca as consultas SQL em cache para fazer reuso.

As afirmativas são, respectivamente,

Resposta comentada

Gabarito Alternativa E

SQL tuning é como afinar um carro de corrida: você ajusta as instruções do banco de dados para que ele encontre e entregue os dados o mais rápido possível, usando os recursos de forma eficiente. O objetivo é fazer o banco de dados trabalhar menos para dar o mesmo resultado.

  • (A) Incorreta: A alternativa afirma V – V – F – F. A segunda afirmativa (IN vs EXISTS) e a terceira (EXISTS vs DISTINCT) estão incorretas, tornando esta alternativa falsa.
  • (B) Incorreta: A alternativa afirma F – V – F – V. A primeira afirmativa (UNION ALL vs UNION) está incorreta, tornando esta alternativa falsa.
  • (C) Incorreta: A alternativa afirma F – F – V – V. A primeira afirmativa (UNION ALL vs UNION) e a terceira (EXISTS vs DISTINCT) estão incorretas, tornando esta alternativa falsa.
  • (D) Incorreta: A alternativa afirma V – F – V – F. A terceira afirmativa (EXISTS vs DISTINCT) e a quarta (Bind Variables) estão incorretas, tornando esta alternativa falsa.
  • (E) Correta:
    • (V) Quando possível, é melhor o uso do UNION ALL em vez de UNION devido ao fato de o UNION ter um processo de remoção de linhas duplicadas. UNION ALL é mais rápido porque simplesmente combina os resultados sem o custo extra de ordenar e remover duplicatas, o que o UNION faz. Se você não precisa garantir a unicidade das linhas combinadas, UNION ALL é a escolha mais performática.
    • (F) Quando possível, é melhor utilizar IN em vez de EXISTS, visto que EXISTS verifica apenas que os valores existem e o IN verifica valores reais. Esta afirmativa é falsa. Em muitos cenários, especialmente com subconsultas correlacionadas ou que retornam muitos resultados, EXISTS pode ser mais eficiente que IN. EXISTS pode parar de procurar assim que encontra a primeira correspondência (curto-circuito), enquanto IN pode precisar processar todos os resultados da subconsulta. A escolha entre eles depende do contexto e do otimizador.
    • (F) Quando possível, é melhor utilizar EXISTS, que verifica a existência de linhas retornadas por uma subconsulta em vez de DISTINCT, que recupera todas as linhas para em seguida suprimir as duplicadas. Esta afirmativa é falsa. EXISTS e DISTINCT servem a propósitos diferentes e não são geralmente intercambiáveis. EXISTS é usado para filtrar linhas com base na existência de registros relacionados, enquanto DISTINCT é usado para garantir que as linhas finais do resultado sejam únicas. A armadilha aqui é que, embora em alguns casos específicos EXISTS possa ser usado para evitar a necessidade de um DISTINCT (por exemplo, ao filtrar em vez de juntar e depois distinguir), eles não são substitutos diretos para a função principal um do outro.
    • (V) Quando possível, é melhor utilizar variáveis BIND nas instruções SQL, uma vez que o software de banco de dados coloca as consultas SQL em cache para fazer reuso. Variáveis BIND (ou parâmetros) permitem que o banco de dados reutilize o plano de execução de uma consulta, mesmo que os valores dos parâmetros mudem. Isso evita o custo de recompilar a consulta a cada execução, economizando tempo de processamento e recursos do servidor (cache de SQL ou shared pool no Oracle).

Fonte: FGV SEFAZ-MG 2022 - Tarde Auditor Fiscal - Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho