Questão nº 86
Questão de Tecnologia da Informação · FGV CGE-SP 2025 (nº 86)
Um DBA está avaliando o desempenho de uma consulta que frequentemente busca dados na tabela Auditoria (com 500 milhões de registros) usando a coluna DataHora_Acesso na cláusula WHERE. O DBA decide criar um índice clusterizado nessa coluna (após remover o índice existente na chave primária autoincremento, se necessário).
Assinale a opção que apresenta a principal implicação técnica de criar um índice clusterizado na coluna DataHora_Acesso de uma tabela tão grande no MS SQL Server, e a consequência direta para a ordenação física dos dados.
- APermite que a tabela tenha um índice clusterizado e um índice não clusterizado na mesma coluna.
- BO índice clusterizado não afeta a ordenação física dos dados, mas armazena a tabela em um heap (estrutura desordenada) contribuindo para a desnormalização da base de dados.
- CO índice clusterizado é apenas um bookmark lógico, e a ordenação física é sempre determinada pela chave primária autoincremento original.
- DO MS SQL Server permite que uma tabela tenha múltiplos índices clusterizados, aumentando a velocidade de todas as consultas.
- EO índice clusterizado define a ordem física de armazenamento das linhas de dados na tabela, o que acelera as consultas por intervalo nessa coluna, mas pode degradar o desempenho de INSERTs/UPDATEs em outras colunas. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Um índice clusterizado é como o índice de um livro que também organiza as páginas do livro na ordem do índice. No banco de dados, ele define a ordem física em que as linhas de dados são armazenadas na tabela, tornando a própria tabela a folha final do índice.
- A) Incorreta: Uma tabela pode ter apenas um índice clusterizado, pois só pode haver uma ordem física de armazenamento dos dados. Embora seja tecnicamente possível criar um índice não clusterizado na mesma coluna do índice clusterizado, isso seria redundante e ineficiente, não sendo uma implicação principal.
- B) Incorreta: O índice clusterizado define a ordenação física dos dados. Se uma tabela tem um índice clusterizado, ela não é um heap (que é uma tabela sem ordem física). Índices são para otimização de acesso, não para desnormalização.
- C) Incorreta: O índice clusterizado não é apenas um bookmark lógico; ele é a própria estrutura física da tabela. A ordenação física é sempre determinada pelo índice clusterizado existente; se o DBA o moveu para
DataHora_Acesso, essa coluna passa a determinar a ordem. - D) Incorreta: O MS SQL Server, como a maioria dos SGBDs, permite que uma tabela tenha apenas um índice clusterizado. Não é possível ter múltiplos índices clusterizados.
- E) Correta: O índice clusterizado define a ordem física de armazenamento das linhas de dados na tabela. Isso acelera drasticamente consultas que buscam dados em um intervalo (
BETWEEN,>,<) na coluna indexada, pois os dados relevantes estão fisicamente próximos. No entanto, inserir novos registros ou atualizar a coluna do índice clusterizado pode ser mais lento, pois o SGBD precisa realocar fisicamente os dados para manter a ordem, o que pode causar page splits e maior I/O. MesmoINSERTseUPDATEsem outras colunas podem ser afetados devido à necessidade de manter a estrutura da página e a integridade do índice.
Fonte: FGV CGE-SP 2025 Auditor Estadual de Controle - Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.