Criando índices agrupados e não agrupados no SQL Server



Experimente Nosso Instrumento Para Eliminar Problemas

Em um SQL Server, existem dois tipos de índices; Índices agrupados e não agrupados. Os índices clusterizados e os índices não clusterizados têm a mesma estrutura física. Além disso, ambos são armazenados no SQL Server como uma estrutura B-Tree.



Índice agrupado:

Uma lista agrupada é um tipo específico de índice que reorganiza o armazenamento físico de registros na tabela. No SQL Server, os índices são usados ​​para acelerar as operações do banco de dados, levando a um alto desempenho. A tabela pode, portanto, ter apenas um índice clusterizado, o que geralmente é feito na chave primária. Os nós folha de um índice clusterizado contêm “Páginas de dados”. Uma tabela pode possuir apenas um índice clusterizado.



Vamos criar um índice clusterizado para ter um melhor entendimento. Em primeiro lugar, precisamos criar um banco de dados.



Criação de banco de dados

Para criar um banco de dados. Clique com o botão direito em “Bancos de dados” no explorador de objetos e selecione “Novo banco de dados” opção. Digite o nome do banco de dados e clique em ok. O banco de dados foi criado conforme mostrado na figura abaixo.

Criação de tabelas usando a visualização de design

Agora vamos criar uma tabela chamada 'Empregado' com a chave primária usando a visualização de design. Podemos ver na imagem abaixo que atribuímos principalmente ao campo denominado “ID” e não criamos nenhum índice na tabela.



Criação de uma tabela chamada “Funcionário” com ID como a chave primária

Você também pode criar uma tabela executando o código a seguir.

USE [teste] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CRIE TABELA [dbo]. [Employee] ([ID] [int] IDENTITY (1,1) NOT NULL, [Dep_ID] [int] NULL, [Name] [ varchar] (200) NULL, [email] [varchar] (250) NULL, [cidade] [varchar] (250) NULL, [endereço] [varchar] (500) NULL, CONSTRAINT [Primary_Key_ID] PRIMARY KEY CLUSTERED ([ID ] ASC) COM (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] GO

A saída será a seguinte.

Criação de uma tabela chamada “Funcionário” com ID como a chave primária

O código acima criou uma tabela chamada 'Empregado' com um campo de ID, um identificador único como chave primária. Agora, nesta tabela, um índice clusterizado será criado automaticamente na ID da coluna devido às restrições da chave primária. Se você quiser ver todos os índices em uma tabela, execute o procedimento armazenado “Sp_helpindex”. Execute o seguinte código para ver todos os índices em uma tabela chamada 'Empregado'. Este procedimento de armazenamento usa um nome de tabela como parâmetro de entrada.

USE teste EXECUTE sp_helpindex Employee

A saída será a seguinte.

“Sp_helpindex” mostrará todos os índices da tabela de funcionários.

Outra maneira de ver os índices da tabela é ir para “Mesas” no explorador de objetos. Selecione a mesa e gaste-a. Na pasta de índices, você pode ver todos os índices relevantes para aquela tabela específica, conforme mostrado na figura abaixo.

Visualizando todos os índices na tabela

Como este é o índice clusterizado, a ordem lógica e física do índice será a mesma. Isso significa que se um registro tiver um Id 3, ele será armazenado na terceira linha da tabela. Da mesma forma, se o quinto registro tiver um id 6, ele será armazenado no 5ºlocalização da mesa. Para entender a ordem dos registros, você precisa executar o seguinte script.

USE [test] GO SET IDENTITY_INSERT [dbo]. [Employee] ON INSERT [dbo]. [Employee] ([ID], [Dep_ID], [Name], [email], [city], [address]) VALORES ( 8, 6, N'Humbaerto Acevedo