Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
602
Assunto : SQL Server
Titulo: Quando utilizar o Drop Existing

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Indices nonClustered em uma tabela tem uma organização interna diferente caso exista ou não exista um indice Clustered.

Quando um índice nonClustered encontra-se em uma tabela sem indice clustered, ele fará uso do que é chamado de RowID, um código que define o posicionamento físico das linhas dentro do arquivo de dados.

Porém quando existe índice clustered em uma tabela o indice nonclustered utilizará a chave do clustered para localizar as linhas, e não o rowID. O uso da chave do clustered é bem mais eficiente do que o uso do rowID.

Agora imagine uma situação em que você deseja eliminar e re-criar o índice clustered de uma tabela, alterando a configuração UNIQUE, ou a ordem de indexação, ou as colunas, enfim, alguma alteração que não poderia ser feita pelo DBCC DBReindex.

Se a tabela for pequena o problema não será notado, mas com grandes tabelas o consumo de CPU para a realização disso é gigantesco.

Ao eliminar o indice clustered o sql server precisa eliminar também todos os nonClustered e recria-los, pois eles, que estavam usando a chave clustered, precisarão passar a usar o rowID.

Terminada essa longa tarefa, você irá criar novamente o indice clustered, com as suas alterações, pois essa era sua intenção desde o inicio.

Essa criação do indice clustered fará com que os índices nonclustered mais uma vez sejam eliminados e recriados, com o objetivo de mais uma vez trocar o rowID que está sendo usando pela chave clustered.

Esse processo, quando realizado para tabelas muito grandes, pode ser bem dispendioso em custo de CPU. Uma alternativa é fazer a criação do novo indice clustered usando a palavra chave drop_existing. Com essa palavra chave você não terá a necessidade de eliminar o indice clustered existente. Você está dizendo ao sql server que está substituindo o indice existente por um novo com novas configurações, isso permite ao sql server fazer uma transição dos índices nonclustered diretamente do índice clustered antigo para o indice clustered novo, evitando o consumo de tempo de CPU com a passagem dos nonclustered para rowid e de volta para a chave clustered.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 11/27/2017 5:24:00 PM
nome: XMjyDdJuXhW
email: jimosanil0c@hotmail.com
comentário:
8y8av9 http://www.LnAJ7K8QSpfMO2wQ8gO.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br