Questão nº 68
Questão de Análise de Sistemas · CESGRANRIO BNDES 01/2024 (nº 68)
Considere que uma tabela com dados de equipamentos médicos (para raio X, tomografia, etc.) foi criada em um Sistema Gerenciador de Banco de Dados (SGBD) Microsoft SQL Server, com uma chave primária composta por “tipo” e “número de série”, e duas chaves estrangeiras, sigla do fabricante e número da nota fiscal de compra (no esquema apresentado, a chave primária está sublinhada e as chaves estrangeiras estão indicadas pelo sinal @ no início do nome do atributo):
EQUIPAMENTO (tipo, numero-de-serie, nome, @sigla-do-fabricante, @nota-fiscal)
Considere ainda que uma consulta aos equipamentos dessa tabela, informando-se apenas um número de nota fiscal, possui um baixo desempenho.
Uma ação a ser executada para melhorar o desempenho dessa consulta é a criação de
- Adois índices clusterizados, um para o par “tipo e número de série” e outro para o número da nota fiscal.
- Bdois índices naturais, sendo um deles com o número da nota fiscal.
- Cum índice composto por tipo, número de série e número da nota fiscal.
- Dum índice não clusterizado para o número da nota fiscal. (alternativa correta)
- Euma visão materializada que tenha apenas o número da nota fiscal.
Resposta comentada
Gabarito Alternativa D
Conceito-chave: Índice é como um sumário do livro: ele acelera buscas por colunas específicas. Como a consulta filtra só pela nota fiscal (que não é chave primária), o banco precisa de um índice próprio para essa coluna, e ele deve ser não clusterizado para não atrapalhar a organização física da tabela (que já é ordenada pela chave primária).
- (A) Incorreta: Não se criam dois índices clusterizados na mesma tabela; o clusterizado define a ordem física dos dados, e só pode haver um. Além disso, o índice da nota fiscal não precisa ser clusterizado.
- (B) Incorreta: "Índice natural" não é um termo técnico padrão do SQL Server; o que importa é o tipo (clusterizado/não clusterizado) e a coluna usada. Criar dois índices sem especificar o tipo não resolve o problema.
- (C) Incorreta: Um índice composto por tipo, número de série e nota fiscal não ajuda, pois a consulta filtra apenas pela nota fiscal — e nesse índice, a nota fiscal é o último campo, então o banco não consegue usá-lo eficientemente para essa busca.
- (D) Correta: Um índice não clusterizado na coluna
nota-fiscalcria uma estrutura separada que aponta para as linhas da tabela, permitindo que a consulta por esse número seja resolvida rapidamente, sem varrer a tabela inteira. É exatamente o que o cenário pede. - (E) Incorreta: Visão materializada com apenas a nota fiscal não ajuda, pois ela não contém as demais colunas que a consulta provavelmente precisa retornar (nome, tipo, etc.), e não é a ferramenta adequada para acelerar uma busca pontual por um valor específico.
Armadilha do distrator mais tentador (C): A banca tenta te enganar com a ideia de "incluir todas as colunas no índice". Mas a ordem importa: como a consulta começa pela nota fiscal, o índice composto que começa com tipo e numero-de-serie é inútil para essa filtragem — o banco só usaria o índice se a busca começasse pela primeira coluna dele.
Fonte: CESGRANRIO BNDES 01/2024 Analista - Análise de Sistemas (Suporte) (Caderno Prova 4). Reproduzida para fins de estudo.