SóProvas


ID
245215
Banca
CESPE / CEBRASPE
Órgão
TRT - 21ª Região (RN)
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Acerca de desempenho e otimização de consultas SQL no SQL
Server 2008, julgue os itens de 63 a 69.

É recomendável o uso de índices do tipo clustered em colunas que sofram alterações frequentes, visando diminuir o "nível de folheamento" da página de índices.

Alternativas
Comentários
  • ERRADO. Indices clusteridados são ordenados causando grande perda de performance em casos de alterações frequentes que exijam constantes e consequente reordenações de índice.

    1. Índices clusterizados

    Em um indice clusterizado o leaf-level (última camada de índice) é a página atual, porque os dados são fisicamente ordenados de forma ascendente.,por isto é possível apenas um índice clusterizado por tabela. A ordenação tanto fisicamente dos dados como do índice é a mesma.

    Os índices cluster são bastante usados em colunas muito acessadas por range de valores, ou acessadas por ordenações, ao criar um índice clusterizado tenha em mente:

    • A chave "Key value" são únicas e por isto ao criar este índice automáticamente é criado um UNIQUE
    • O maior valor de um índice clusterizado é 5% da tabela (dependendo da chave do índice)
    • Ao criar uma chave primária por default ela vem como clusterizado se não houver já um índice cluster, mas é opcional podendo mudar para não cluster

    O índice clusterizado é parecido a uma agenda de telefone onde ficam as iniciais do alfabeto ficam logo em seguida os nomes e telefones das pessoas.

  • O índice clusterizado, é um índice gerado na própria estrutura de armazenamento dos dados. Esse tipo de índice, faz com que os dados da sua tabela, fiquem organizados fisicamente na sequencia. Em consequência, só podemos ter um único índice clusterizado por tabela. Por isso é importantíssimo analisar bem caso a caso antes de decidir em qual coluna devemos criar um índice clusterizado.
    Em colunas que sofrem alterações com frequência, não é recomendada a criação desse tipo de indice, porque a tabela terá que ser reordenada a cada alteração dos dados da referida coluna.

    O índice não clusterizado, é um índice criado em uma estrutura separada dos dados. São criadas páginas de índices que irão conter os apontamentos para os registros físicos. É eficiente quando precisamos ter várias maneiras de pesquisa de dados dentro de uma tabela.

  • Em Índices Clusterizados, as linhas são ordenadas fisicamente, então fica complicado reordenar tudo a cada nova inserção.
    Já nos índices não-clusterizados, os índices e os dados são separados.
    Uma tabela só pode ter um unico índice cluster.
    No SQL Server, ela pode ter até 249 índices não-cluster.
  • Bem, os indices podem dar boa performance a uma tabela, porem se eles forem criados incorretamente podem causar o efeito inverso.
    Pretendo nao te dar uma aula de indices Clustered e e Non-Clustered, mas entenda os seguintes conceitos: Um índice clustered define a ordem física das páginas de dados da tabela, ou seja, a cada nova inserção nesta tabela que tem um índice clustered, a ordem física dos dados podera sofrer mudancas, por isso se for mal planejado este indice vc podera ter perdas de desempenho pelo fato de que o SQL Server ira ter q movimentar as informacoes das suas paginas de dados.
    Por exemplo: Vc indica que a Coluna "Nome"de determinada tabela sera um indice clustered, ou seja, toda a ordem fisica da sua tabela se baseara nesta coluna. Imagine as seguinte infomacoes:

    Nome

    Amanda
    Bruno

    Diego

    Caso vc queira colocar o nome Carlos, o SQL Server tera que fazer um grande esforco de mudar toda a ordem fisica de sua tabela para que consiga colocar tal informacao. Isso com certeza nao eh uma boa aplicacao de indice clustered.
    É recomendável usar um índice clustered para colunas que irao representar a ordem da tabela, ou seja, a ordem que os resultados serao apresentados. Nao é aconselhavel colocar tal indice em colunas que sofrem modificacoes constantemente.
    Ja o indice Non-Clustered nao define a ordem fisica da sua tabela, na vdd ele ajudara vc a achar de forma mais facil a informacao desejada. Podemos comparar a um indice de um livro, ao inves de percorrer pagina por pagina para encontrar determinado assunto, por meio de um indice vc podera ir direto a pagina desejada. Para isso o SQL Server utiliza um nivel de ponteiro para os dados, isso faz parte do conceito de B tree.
    O ideal eh usar indices Non-clustered em colunas que sao chaves em sua tabela (utilizadas na clausula WHERE de suas queries), mesmo que ela costume sofrer alteracoes.