Basicamente, um Sistema Gerenciador de Bancos de Dados (SGBD) pode ser considerado, de maneira abstrata, como um conjunto de registros ou arquivos, arquivos esses nos quais se armazenam a estrutura e os dados das tabelas. Porém, procurar dados percorrendo todas as tabelas e arquivos não é eficiente. Desta forma, os SGBD implementam estruturas que organizam os registros de dados permitindo a recuperação de maneira eficiente desde que sejam satisfeitas as condições de pesquisa. A essa estrutura dá-se o nome de índices. Em relação a índices em um SGBD, assinale V para a afirmativa verdadeira e F para afirmativa falsa. ( ) Uma tabela que possua um número grande de índices e na qual as colunas da tabela estão fazendo parte de N índices, operações de INSERT, UPDATE, DELETE terão seu desempenho afetado devido ao fato de que todos os índices deverão ser ajustados. ( ) Em um banco de dados, todas as tabelas, independentemente do tamanho e da frequência com que são atualizadas, possuem pelo menos um índice NOCLUSTERED ou CLUSTERED a fim de tornar operações de SELECT eficientes. ( ) Índices que implementam estruturas de árvore B+ não são eficientes, uma vez que a tarefa de percorrer a estrutura da árvore está diretamente ligada à sua altura. Dessa forma, é sempre melhor opção o uso da estrutura árvore B, que utiliza o algoritmo de busca binária para percorrer a estrutura. As afirmativas são, respectivamente,
- A)V, F e V.
Errada, porque a primeira afirmativa é verdadeira e a terceira é falsa.
- B)V, V e F.
Errada, porque a segunda afirmativa é falsa e a terceira também é falsa.
- C)F, V e F.
Errada, porque a primeira afirmativa é verdadeira, não falsa.
- D)F, V e V.
Errada, porque a primeira afirmativa é verdadeira e a terceira é falsa.
- E)V, F e F.
Certa, pois a primeira afirmativa é verdadeira e as duas últimas são falsas.
Gabarito: E
Índice em banco de dados é como um atalho para achar dados sem precisar vasculhar a tabela inteira. Ele melhora muito a consulta em SELECT, mas vem com um custo: sempre que você altera dados, o SGBD precisa atualizar também as estruturas auxiliares do índice. Por isso, a primeira afirmativa é verdadeira. Se uma tabela tem vários índices, operações de INSERT, UPDATE e DELETE tendem a ficar mais lentas, porque o banco não atualiza só a linha da tabela, mas também todos os índices que usam aquelas colunas. A segunda está errada porque nem toda tabela precisa ter índice, muito menos obrigatoriamente um clustered ou nonclustered. Existem tabelas pequenas, pouco consultadas ou muito voláteis em que o custo de manter índice pode ser maior do que o benefício. Índice ajuda consulta, mas não é lei da natureza do SGBD. A terceira também está errada. Índices em árvore B e, principalmente, em árvore B+ são eficientes e muito usados em bancos relacionais justamente porque mantêm a busca em tempo logarítmico. A ideia de que a árvore B usa busca binária para percorrê-la está confusa: a estrutura da árvore é organizada por comparações e navegação entre nós, não por “percorrer binariamente” como se fosse uma busca em vetor ordenado. Então o gabarito correto é E: V, F, F.