Pular para o conteúdo principal

Questão de Banco de Dados — Geral — Quadrix 2026

Banco de DadosGeral
Código
qa433561
Banca
Quadrix
Órgão
CREFITO 17
Ano
2026
Cargo
Ana ( )
Durante uma análise das rotinas do sistema, o analista deparou‑se com o script SQL a seguir, utilizado diariamente para gerar relatórios financeiros de fisioterapeutas cadastrados. SELECT p.nome, c.cidade, COUNT(a.id) AS total_atendimentos, SUM(a.valor) AS receita_total FROM Profissional p INNER JOIN Atendimento a ON p.id = a.id_profissional LEFT JOIN Clinica c ON a.id_clinica = c.id WHERE p.especialidade = ‘Fisioterapia’ GROUP BY p.nome, c.cidade HAVING COUNT(a.id) > 10 ORDER BY receita_total DESC; Com base nessa situação hipotética e a partir da análise estrutural dessa query e dos conceitos fundamentais de banco de dados, julgue o item seguinte.   Caso haja lentidão na geração do relatório, a criação de índice sobre a coluna especialidade pode constituir medida de otimização voltada a acelerar a filtragem de registros realizada na cláusula WHERE.
  1. CCerto
  2. 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 e otimização de consultas SQL

Gabarito: CERTO (letra C). A criação de um índice sobre a coluna especialidade da tabela Profissional é, de fato, uma medida válida de otimização para acelerar a filtragem realizada na cláusula WHERE (WHERE p.especialidade = 'Fisioterapia'), pois o índice permite ao SGBD localizar rapidamente as linhas que satisfazem a condição, evitando a varredura completa da tabela (full table scan). Essa é uma técnica clássica de tuning de consultas em bancos de dados relacionais.

O índice é uma estrutura auxiliar de dados que acelera a recuperação de registros, funcionando de forma análoga ao índice remissivo de um livro: em vez de percorrer todas as páginas (linhas) para encontrar um termo, você consulta diretamente a localização. No contexto de bancos de dados, um índice sobre a coluna especialidade cria uma estrutura ordenada (geralmente uma árvore B+ ou hash) que mapeia os valores da coluna para as linhas correspondentes. Quando a consulta filtra por especialidade = 'Fisioterapia', o SGBD pode usar esse índice para acessar apenas as linhas que atendem à condição, reduzindo drasticamente o número de operações de I/O e o tempo de resposta.

É importante entender que a otimização de consultas envolve várias estratégias, e a criação de índices é uma das mais comuns. No entanto, nem toda coluna merece um índice: colunas com baixa seletividade (poucos valores distintos, como um campo booleano) podem não se beneficiar, pois o índice retornaria uma grande fração das linhas. No caso da coluna especialidade, se houver muitos profissionais com especialidades diferentes, a seletividade é alta e o índice é eficaz. Além disso, é preciso considerar o custo de manutenção do índice em operações de INSERT, UPDATE e DELETE, mas para uma consulta de relatório diário, o benefício geralmente supera o custo.

Outro ponto relevante é que a cláusula WHERE não é o único lugar onde índices ajudam: eles também aceleram junções (JOIN), ordenações (ORDER BY) e agrupamentos (GROUP BY). No script apresentado, além do filtro por especialidade, há junções entre as tabelas Profissional, Atendimento e Clinica, e um GROUP BY com ORDER BY. Índices nas colunas de junção (p.id, a.id_profissional, a.id_clinica, c.id) e nas colunas de agrupamento/ordenação também poderiam melhorar o desempenho. Contudo, a afirmação do item é específica e correta: o índice sobre especialidade acelera a filtragem do WHERE.

A pegadinha que a banca poderia explorar é a tentação de achar que o índice sobre especialidade não ajudaria porque a consulta também faz junções e agregações. Mas a otimização não precisa resolver todos os gargalos de uma vez; cada índice pode atacar um ponto específico. O item afirma apenas que o índice pode acelerar a filtragem do WHERE, o que é verdadeiro. Portanto, a resposta é CERTO.

1Função
Acelera filtragem (WHERE)
Acelera junções (JOIN)
Acelera ordenação (ORDER BY)
Acelera agrupamento (GROUP BY)
2Quando usar
Alta seletividade (muitos valores distintos)
Consultas frequentes
3Custo
Manutenção em INSERT/UPDATE/DELETE
Espaço em disco
Índice em banco de dados
LEVELsoulevel.com.br
Índice em banco de dados: Função (Acelera filtragem (WHERE), Acelera junções (JOIN), Acelera ordenação (ORDER BY), Acelera agrupamento (GROUP BY)); Quando usar (Alta seletividade (muitos valores distintos), Consultas frequentes); Custo (Manutenção em INSERT/UPDATE/DELETE, Espaço em disco)

Item — ✅ CERTO ⟵ GABARITO

A afirmação está correta. A cláusula WHERE p.especialidade = 'Fisioterapia' filtra as linhas da tabela Profissional com base no valor da coluna especialidade. Sem um índice, o SGBD precisaria percorrer todas as linhas da tabela (full table scan) para encontrar as que atendem à condição. Com um índice sobre especialidade, o SGBD pode localizar diretamente as linhas correspondentes, reduzindo o custo de I/O e acelerando a consulta. Essa é uma técnica padrão de otimização de desempenho em bancos de dados relacionais.

PEGA ESSA DICA!

Na prova, quando a questão perguntar sobre otimização de consultas, lembre-se dos principais recursos: índices (para acelerar WHERE, JOIN, ORDER BY, GROUP BY), reescrita de consultas (evitar funções em colunas indexadas, usar EXISTS em vez de IN quando apropriado), e análise do plano de execução. Para o WHERE com igualdade, um índice B-tree ou hash é eficaz; para faixas de valores, o B-tree é o mais indicado.

Gabarito: letra C (CERTO).

Link permanente: /questoes/qa433561