Índices B-tree
Gabarito: letra E. A alternativa E descreve corretamente o conceito de covering index (índice coberto), no qual todas as colunas necessárias para uma consulta estão presentes no próprio índice, permitindo que os dados sejam recuperados diretamente da estrutura do índice, sem a necessidade de acessar a tabela base. Isso é uma característica importante dos índices B-tree e de outros tipos de índice.
Alternativa | Afirmação sobre Índice B-tree | Correção | Justificativa |
|---|
A | Não se adapta bem a inserções/atualizações; indicado para bases estáticas. | ❌ Incorreta | A B-tree é auto-balanceada e projetada para operações dinâmicas frequentes. |
B | Evita uso de memória adicional; não mantém ponteiros para registros. | ❌ Incorreta | Todo índice B-tree armazena ponteiros para as linhas, consumindo espaço extra. |
C | Possui estrutura de árvore desbalanceada, facilitando inserções. | ❌ Incorreta | A B-tree é balanceada por definição; todas as folhas estão no mesmo nível. |
D | Recomendado para recuperar >50% dos registros; melhora performance. | ❌ Incorreta | Índices são vantajosos para alta seletividade (poucos registros); >50% favorece full scan. |
E | Dados podem ser recuperados diretamente do índice, sem acessar a tabela, se todas as colunas requeridas estão no índice. | ✅ Correta | Descreve o conceito de covering index (índice coberto), característica dos índices B-tree. |
Alternativa A — ❌ Incorreta
Afirma que o índice B-tree não se adapta bem a operações de inserção ou atualização, sendo mais indicado para bases estáticas. Na realidade, a árvore B-tree é auto-balanceada e foi projetada justamente para lidar eficientemente com inserções, remoções e atualizações frequentes, mantendo o balanceamento e garantindo bom desempenho em bancos de dados dinâmicos. Portanto, a afirmação é falsa.
Alternativa B — ❌ Incorreta
Diz que o uso do índice B-tree evita o uso de memória adicional porque não mantém ponteiros para os registros. Na verdade, todo índice B-tree armazena ponteiros (referências) para as linhas da tabela, o que consome espaço extra em disco/memória. Essa é uma característica essencial para que o índice possa localizar os registros rapidamente.
Alternativa C — ❌ Incorreta
Afirma que o índice B-tree possui estrutura de árvore desbalanceada. O contrário é verdadeiro: a B-tree é uma árvore balanceada por definição. Todas as folhas estão no mesmo nível, e a árvore mantém o balanceamento através de operações de splitting e merging durante inserções e remoções, garantindo complexidade logarítmica para buscas.
Alternativa D — ❌ Incorreta
Recomenda o uso de índices B-tree para recuperar grande volume de registros (mais de 50% da tabela). Índices são mais vantajosos quando a consulta seleciona uma pequena fração dos registros (alta seletividade). Quando a consulta retorna uma grande proporção das linhas, o otimizador geralmente opta por uma varredura sequencial completa da tabela (full scan), pois o custo de acessar o índice + a tabela torna-se maior do que ler toda a tabela.
Alternativa E — ✅ Correta ⟵ GABARITO
Conforme explicado na abertura, a alternativa descreve o conceito de covering index ou index-only scan. Quando um índice contém todas as colunas necessárias para a consulta (seja por ser um índice composto ou por incluir colunas adicionais como parte da chave), o banco de dados pode responder à consulta apenas percorrendo o índice, sem precisar buscar as linhas na tabela. Isso reduz operações de I/O e melhora significativamente o desempenho.
Gabarito: letra E.