Início > SQL Server > Indices

Indices

Primeiramente quero agradecer ao Sanches pelas dicas sobre os Posts, Fiquem a vontade para me enviar criticas ou sugestões para posts.

 

Esta semana fiz uma alteração em uma tabela do no nosso banco de dados onde mudei a ordem das colunas do meu índice cluster, isso pode ser muito útil caso as consultas que são executadas nesta tabela tenham as colunas do índice cluster no where. Vamos a um exemplo prático.

 

–Vamos criar uma tabela para teste

drop table teste

create table teste (ID   Int Identity(1,1) NOT NULL,

                    Nome VarChar(200) NOT NULL,

                    Data DateTime)

 

alter table teste add constraint xpk_Nome_ID primary key (Nome, ID)

go

 

set nocount on

declare @i Int

set @i = 0

 

while @i < 1000

begin

  insert into teste (nome,data) values(‘A’, GetDate())

  insert into teste (nome,data) values(‘B’, GetDate())

  insert into teste (nome,data) values(‘C’, GetDate())

  insert into teste (nome,data) values(‘D’, GetDate())

  insert into teste (nome,data) values(‘E’, GetDate())

  set @i = @i + 1;

end

 

— Vamos imaginar a seguinte consulta

— Repare que o SQL não consegue fazer o seek porque a tabela está ordenada pela coluna Nome e não pela coluna ID

select * from teste

where id = 10

 

–Apaga a primary key

alter table teste drop constraint xpk_Nome_ID

GO

–Recria a primary key ordenado por ID e Nome

alter table teste add constraint xpk_ID_Nome primary key (ID, Nome)

 

— Ao executar a consulta novamente conseguimos um seek.

select * from teste

where id = 10

 

Claro que isso depende de um estudo bem feito das consultas que são executadas na sua tabela, bem como a alteração dos valores das colunas(UPDATE) porque uma má alteração poderia causar fragmentação na tabela, mas fragmentação é assunto para um outro post.

 

Valeu

__________________________________________________________________
Fabiano Neves Amorim (MCP – MCTS – SQL Server)
Análise – NewCon Enterprise
* fabiano@cnpm.com.br – http://fabianosqlserver.spaces.live.com/

( (55 – 14) 3404-3700

Anúncios
Categorias:SQL Server
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: