Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FUNDATEC 2023

Banco de DadosSQL
Código
qq890110
Banca
FUNDATEC
Órgão
BRDE
Ano
2023
Nível
Superior
Cargo
Analista de Sistemas - Administração de Banco de Dados
Considere que o DBA de um banco de dados SQL Server 2019 definiu o índice abaixo sobre a tabela TAB1:CREATE NONCLUSTERED INDEX IDX1 ON TAB1 (codcomp, dataInicial) WHERE DataFinal IS NOT NULL; Sobre isso, analise as assertivas abaixo: I. Esse comando cria um índice filtrado. II. O índice criado por esse comando contribui à melhoria do desempenho de consultas principalmente quando a condição (DataFinal IS NOT NULL) é observada em um grande número de tuplas dessa tabela. III. O formato de armazenamento primário do índice criado por esse comando é columnstore. Quais estão corretas?
  1. AApenas I.
  2. BApenas II.
  3. CApenas III.
  4. DApenas II e III.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoA — Apenas I.

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 Filtrados no SQL Server

Gabarito: letra A. A assertiva I está correta: o comando com cláusula WHERE cria um índice filtrado. A assertiva II está incorreta porque índices filtrados são mais eficientes quando a condição seleciona um pequeno número de tuplas, não um grande número. A assertiva III está incorreta: o índice é NONCLUSTERED (B-tree), não columnstore.

A banca testa o conceito de índices filtrados e a diferença entre índices B-tree e columnstore.

Assertiva

Análise

Correta?

I. Cria índice filtrado

O comando possui cláusula WHERE, caracterizando índice filtrado no SQL Server.

✅ Sim

II. Melhora desempenho quando condição atinge grande número de tuplas

Índice filtrado é mais eficiente quando a condição é seletiva (poucas tuplas). O enunciado inverte o conceito.

❌ Não

III. Formato de armazenamento primário é columnstore

Índice NONCLUSTERED padrão é B-tree. Columnstore exige palavra-chave COLUMNSTORE.

❌ Não

Item I — ✅ Correto

O comando CREATE NONCLUSTERED INDEX ... WHERE DataFinal IS NOT NULL cria um índice filtrado. No SQL Server, um índice com uma cláusula WHERE é chamado de índice filtrado (filtered index). Ele armazena apenas as linhas que atendem à condição, otimizando consultas que usam esse filtro.

Item II — ❌ Incorreto

Um índice filtrado é mais útil quando a condição do filtro é seletiva, ou seja, quando um pequeno número de tuplas satisfaz a condição. Se a condição DataFinal IS NOT NULL for verdadeira para um grande número de tuplas (pouco seletiva), o índice será grande e seu benefício será reduzido, podendo até piorar o desempenho. A assertiva inverte o conceito.

Item III — ❌ Incorreto

O comando cria um índice NONCLUSTERED, cujo formato de armazenamento primário é uma árvore B+ (B-tree), não columnstore. Índices columnstore são criados com a palavra-chave COLUMNSTORE (ex.: CREATE NONCLUSTERED COLUMNSTORE INDEX ...). São estruturas otimizadas para data warehousing, não para este caso.

NÃO CAIA NESSA!

A banca troca o sentido da seletividade na assertiva II: o candidato pode pensar que um índice filtrado ajuda quando a condição abrange muitas linhas, mas o correto é que ele é mais eficiente quando atinge poucas linhas (filtro seletivo).

Gabarito: letra A — apenas a assertiva I está correta.

Link permanente: /questoes/qq890110