Questão de Banco de Dados — Otimização (Tuning) em Banco de Dados — CESPE / CEBRASPE 2025
Banco de Dados›Otimização (Tuning) em Banco de Dados
Código
ce417275
Banca
CESPE / CEBRASPE
Órgão
BDMG
Ano
2025
Cargo
Ana Desen ( )
Julgue o próximo item, relativo a visualização de dados, banco de dados e BI (business intelligence).
Índices em colunas frequentemente usadas em cláusulas WHERE podem melhorar significativamente a performance de consultas SQL em bancos de dados relacionais.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Índices em bancos de dados relacionais
Gabarito: Certo. A afirmativa está correta: índices criados sobre colunas frequentemente usadas em cláusulas WHERE podem melhorar significativamente a performance de consultas SQL em bancos de dados relacionais. Isso ocorre porque o índice permite ao SGBD localizar diretamente as linhas que atendem à condição, evitando a varredura completa da tabela (full table scan).
Um índice é uma estrutura de dados auxiliar, geralmente implementada como uma árvore B ou uma tabela hash, que armazena os valores de uma ou mais colunas de forma ordenada e aponta para as linhas correspondentes na tabela. Quando uma consulta filtra por uma coluna indexada, o otimizador de consultas pode usar o índice para encontrar rapidamente os registros relevantes, em vez de ler todas as linhas da tabela para verificar a condição. Essa é a base do tuning de consultas SQL.
A otimização de consultas, também chamada de tuning, é o processo de escolher a estratégia de execução mais eficiente para uma consulta, com o objetivo de minimizar o tempo de resposta e o uso de recursos. O uso adequado de índices é uma das principais técnicas de otimização, pois reduz drasticamente o número de operações de I/O (leitura em disco), que são as mais lentas em um sistema de banco de dados.
No entanto, é importante destacar que a criação de índices não é uma solução universal. Índices em colunas com baixa seletividade (poucos valores distintos) ou em tabelas com poucas linhas podem não trazer benefícios e até prejudicar o desempenho de operações de escrita (INSERT, UPDATE, DELETE), pois o índice também precisa ser atualizado. Além disso, aplicar funções diretamente sobre a coluna filtrada (ex.: WHERE ANO(data) = 2023) torna a consulta não-SARGable, impedindo o uso do índice. Portanto, a afirmativa está correta ao afirmar que índices em colunas usadas em WHEREpodem melhorar a performance, o que é verdadeiro na maioria dos casos práticos.
A pegadinha desta questão é justamente a palavra "podem". O candidato pode ser levado a marcar "Errado" ao pensar em casos em que o índice não ajuda (como em colunas de baixa seletividade ou em tabelas pequenas). No entanto, a afirmativa não diz que o índice sempre melhora, apenas que pode melhorar, o que é uma afirmação verdadeira e genérica. A banca explora a tendência do candidato de buscar exceções para negar uma afirmação que, na verdade, é correta em sua essência.
Índice em coluna de WHERE: Melhora performance (Evita full table scan, Localiza linhas direto, Reduz I/O em disco); Pode prejudicar (Baixa seletividade, Tabela pequena, Escritas (INSERT/UPDATE/DELETE)); Não-SARGable (Função na coluna (ex.: ANO(data)), Impede uso do índice)
NÃO CAIA NESSA!
A banca usa o verbo "podem" para induzir o candidato a pensar em exceções (como colunas de baixa seletividade ou tabelas pequenas) e marcar "Errado". Mas a afirmativa é genérica e verdadeira: índices em colunas de WHEREpodem (e geralmente melhoram) a performance. Não confunda a regra geral com as exceções — a questão não afirma que o índice é sempre benéfico.