Indices em Tabela
06/04/2005
0
Foxcyber
Posts
06/04/2005
Emerson Nascimento
você deve criar índices para todos os campos utilizados em relacionamento de tabelas e todos aqueles utilizados em critérios de pesquisa (where). geralmente clientes são ´procurados´ pelo cnpj, razao social ou nome fantasia, cidade e bairro.
no caso acima, deveriam ser criados pelo menos 4 índices (fora a chave primária).
if not exists(select * from dbo.sysindexes where id = object_id(N´[dbo].[Clientes]´) and name=´PK_Clientes´) ALTER TABLE [dbo].[Clientes] WITH NOCHECK ADD CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED ( [ID] ) WITH FILLFACTOR = 90 ON [PRIMARY] GO if not exists(select * from dbo.sysindexes where id = object_id(N´[dbo].[Clientes]´) and name=´IX_Clientes_Cnpj´) ALTER TABLE [dbo].[Clientes] WITH NOCHECK ADD CONSTRAINT [IX_Clientes_Cnpj] UNIQUE CLUSTERED ( [CNPJ] ) ON [PRIMARY] GO if not exists(select * from dbo.sysindexes where id = object_id(N´[dbo].[Clientes]´) and name=´IX_Clientes_Razao´) ALTER TABLE [dbo].[Clientes] WITH NOCHECK ADD CONSTRAINT [IX_Clientes_Razao] CLUSTERED ( [RAZAOSOCIAL] ) ON [PRIMARY] GO if not exists(select * from dbo.sysindexes where id = object_id(N´[dbo].[Clientes]´) and name=´IX_Clientes_Fantasia´) ALTER TABLE [dbo].[Clientes] WITH NOCHECK ADD CONSTRAINT [IX_Clientes_Fantasia] CLUSTERED ( [NOMEFANTASIA] ) ON [PRIMARY] GO if not exists(select * from dbo.sysindexes where id = object_id(N´[dbo].[Clientes]´) and name=´IX_Clientes_Local´) ALTER TABLE [dbo].[Clientes] WITH NOCHECK ADD CONSTRAINT [IX_Clientes_Local] CLUSTERED ( [BAIRRO], [CIDADE], [UF] ) ON [PRIMARY] GO
26/04/2005
Marcus.magalhaes
Me parece que houve um pequeno engano no post acima.
Vc só pode ter 1 índice clustered, todos outros devem ser nonclustered. Portando uma vez criado o mesmo na PK, todos os outros CLUSTERED devem ser trocados por NONCLUSTERED.
Att,
Clique aqui para fazer login e interagir na Comunidade :)