Questão de Banco de Dados — Otimização (Tuning) em Banco de Dados — VUNESP 2025
Banco de Dados›Otimização (Tuning) em Banco de Dados
Código
vu222872
Banca
VUNESP
Órgão
TJ SP
Ano
2025
Cargo
AnaSistJ ( )
Considerando a otimização de consultas em bancos de dados relacionais, uma das condições avaliadas é a seletividade, que tem como definição
Ao número de blocos de memória ocupados pela tabela definida na consulta.
Ba razão entre o número de registros que não contenham valores nulos e o número total de registros da tabela.
Co número máximo de acessos simultâneos permitido pelo sistema gerenciador de bancos de dados em uso.
Da razão entre o número de registros que satisfazem a condição definida na consulta e o número total de registros da tabela.
Eo número de registros da tabela definida na consulta dividido pelo número total de registros de todas as tabelas do banco de dados.
Revelar gabarito e comentário▾
GabaritoD — a razão entre o número de registros que satisfazem a condição definida na consulta e o número total de registros da tabela.
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”.
Seletividade em otimização de consultas
Gabarito: letra D. A seletividade é a razão entre o número de registros que satisfazem a condição da consulta e o número total de registros da tabela — um valor entre 0 e 1 que o otimizador usa para estimar o custo de cada plano de execução. Essa definição é a clássica da literatura de bancos de dados (Elmasri & Navathe, por exemplo), e é exatamente o que a alternativa D descreve.
A seletividade é um conceito central no processo de otimização de consultas (tuning). Quando o SGBD recebe uma consulta SQL, ele precisa escolher, entre várias estratégias possíveis, aquela que minimize o tempo de resposta e o uso de recursos. Para isso, o otimizador consulta o catálogo do sistema, que guarda estatísticas sobre as tabelas e atributos — como o número de registros, o número de valores distintos de cada atributo e os valores mínimo e máximo. Com base nessas estatísticas, ele estima a seletividade de cada condição da consulta.
A seletividade, portanto, é uma medida de quão restritiva é uma condição. Uma condição com seletividade baixa (próxima de 0) retorna poucos registros — por exemplo, uma busca por uma chave primária específica. Uma condição com seletividade alta (próxima de 1) retorna muitos registros — por exemplo, uma busca por um atributo com poucos valores distintos. O otimizador usa essa informação para decidir, entre outras coisas, se vale a pena usar um índice ou fazer uma varredura completa na tabela (full table scan).
Um exemplo concreto: imagine uma tabela Clientes com 10.000 registros. Uma consulta SELECT * FROM Clientes WHERE cidade = 'São Paulo' retorna 2.500 registros. A seletividade dessa condição é 2.500 / 10.000 = 0,25. Se houver um índice sobre a coluna cidade, o otimizador pode decidir usá-lo, pois a seletividade é relativamente baixa. Se a consulta fosse SELECT * FROM Clientes WHERE ativo = 1 e 9.000 registros fossem ativos, a seletividade seria 0,9 — alta — e o otimizador provavelmente preferiria uma varredura completa, já que quase todos os registros seriam retornados.
A pegadinha desta questão está em confundir seletividade com outros conceitos de desempenho, como o número de blocos ocupados pela tabela, a quantidade de valores nulos ou o número de acessos simultâneos. A banca explora justamente essa confusão: o candidato que não domina o conceito pode ser atraído por alternativas que parecem plausíveis, mas que descrevem outras métricas. Guarde a definição exata: seletividade = registros que satisfazem a condição / total de registros da tabela. É esse o critério que vai separar as alternativas corretas das incorretas.
Alternativa A — ❌ Incorreta
Esta alternativa descreve o número de blocos de memória ocupados pela tabela, que é uma estatística do catálogo (indicada por bR na literatura), mas não é a seletividade. A seletividade é uma razão entre quantidades de registros, não uma medida de espaço físico. O número de blocos é usado para estimar custos de I/O, mas não define a seletividade.
Alternativa B — ❌ Incorreta
Esta alternativa fala da razão entre registros não nulos e o total de registros. Isso não é seletividade. A seletividade considera os registros que satisfazem a condição da consulta, não os que têm valores não nulos em algum atributo. A presença de valores nulos é uma característica dos dados, mas não entra na definição de seletividade.
Alternativa C — ❌ Incorreta
Esta alternativa descreve o número máximo de acessos simultâneos permitido pelo SGBD, que é um conceito de concorrência, não de otimização de consultas. A seletividade é uma métrica usada pelo otimizador para escolher o plano de execução, não uma limitação de acesso simultâneo.
Alternativa D — ✅ Correta ⟵ GABARITO
Esta é a definição exata de seletividade: a razão entre o número de registros que satisfazem a condição definida na consulta e o número total de registros da tabela. É um número entre 0 e 1, usado pelo otimizador para estimar o custo de cada plano de execução. A alternativa espelha perfeitamente a definição clássica da literatura.
Alternativa E — ❌ Incorreta
Esta alternativa divide o número de registros da tabela da consulta pelo número total de registros de todas as tabelas do banco de dados. Isso não faz sentido no contexto de seletividade, que é uma medida relativa a uma única tabela (ou relação) e à condição aplicada sobre ela. A seletividade não compara uma tabela com o banco inteiro.