Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Você pode criar índices clusterizados em tabelas usando o SQL Server Management Studio ou o Transact-SQL. Com poucas exceções, cada tabela deve ter um índice clusterizado. Além de melhorar o desempenho da consulta, um índice clusterizado pode ser reconstruído ou reorganizado sob demanda para controlar a fragmentação da tabela. Um índice clusterizado também pode ser criado em uma exibição. (Os índices agrupados são definidos no artigo Índices agrupados e não agrupados.)
Implementações típicas
Os índices agrupados são implementados das seguintes maneiras:
PRIMARY KEYeUNIQUEconstrangimentos**Quando você cria uma restrição de
PRIMARY KEY, um índice clusterizado exclusivo na coluna ou colunas é criado automaticamente se um índice clusterizado na tabela ainda não existir e você não especificar um índice não clusterizado exclusivo. A coluna de chave primária não pode permitir valoresNULL.Quando você cria uma restrição de
UNIQUE, um índice não clusterizado exclusivo é criado para impor uma restrição deUNIQUEpor padrão. Você pode especificar um índice clusterizado exclusivo se um índice clusterizado na tabela ainda não existir.Um índice criado como parte da restrição recebe automaticamente o mesmo nome que o nome da restrição. Para obter mais informações, consulte Restrições de chave primária e estrangeira e Restrições exclusivas e restrições de verificação.
Índice independente de uma restrição
Você pode criar um índice clusterizado em uma coluna diferente da coluna de chave primária se uma restrição de chave primária não clusterizada tiver sido especificada.
Limitations
Quando uma estrutura de índice clusterizada é criada, é necessário espaço em disco para as estruturas antiga (origem) e nova (destino) em seus respetivos arquivos e grupos de arquivos. A estrutura antiga não é desalocada até que a totalidade da transação seja finalizada. Espaço em disco temporário adicional para classificação também pode ser necessário. Para obter mais informações, consulte Requisitos de espaço em disco para operações DDL de índice.
Se um índice clusterizado for criado em uma pilha com vários índices não clusterizados existentes, todos os índices não clusterizados deverão ser reconstruídos para que contenham o valor da chave de clustering em vez do identificador de linha (RID). Da mesma forma, se um índice clusterizado for descartado em uma tabela que tenha vários índices não clusterizados, os índices não clusterizados serão todos reconstruídos como parte da operação
DROP. Este processo pode levar um tempo significativo em tabelas grandes.A maneira preferida de criar índices em tabelas grandes é começar com o índice clusterizado e, em seguida, criar quaisquer índices não clusterizados. Considere definir a
ONLINEopção paraONquando você criar índices em tabelas existentes. Quando definido comoON, os bloqueios de mesa de longo prazo não são mantidos. Isso permite que as consultas ou atualizações da tabela subjacente continuem. Para obter mais informações, consulte Executar operações de índice online.A chave de índice de um índice agrupado não pode conter colunas varchar que tenham dados existentes na unidade de alocação
ROW_OVERFLOW_DATA. Se um índice clusterizado for criado em uma coluna varchar e os dados existentes estiverem na unidade de alocaçãoIN_ROW_DATA, as ações subsequentes de inserção ou atualização na coluna que deslocariam os dados para fora da linha falharão. Para obter informações sobre tabelas que podem conter dados de estouro de linha, use a função de gestão dinâmica sys.dm_db_index_physical_stats (Transact-SQL).
Permissions
Requer permissão ALTER na tabela ou vista. O usuário deve ser membro da função de servidor fixa sysadmin ou das funções de banco de dados db_ddladmin e db_owner fixas.
Usar o SQL Server Management Studio
Criar um índice clusterizado a partir do Pesquisador de Objetos
No Pesquisador de Objetos, expanda a tabela na qual você deseja criar um índice clusterizado.
Clique com o botão direito do rato na pasta Índices, aponte para Novo Índicee selecione Índice Clusterizado....
Na caixa de diálogo Novo Índice, na página Geral, digite o nome do novo índice na caixa Nome do Índice.
Em Colunas de chave de índice, selecione Adicionar....
Na caixa de diálogo Selecionar Colunas detable_name, selecione a caixa de seleção da coluna da tabela a ser adicionada ao índice agrupado.
Selecione OK.
Na caixa de diálogo Novo Índice, selecione OK.
Criar um índice clusterizado usando o Designer de Tabela
No Pesquisador de Objetos, expanda o banco de dados no qual você deseja criar uma tabela com um índice clusterizado.
Clique com o botão direito do rato na pasta Tabelas e selecione Nova Tabela....
Crie uma nova tabela como faria normalmente. Para obter mais informações, consulte Criar tabelas (Mecanismo de Banco de Dados).
Clique com o botão direito do mouse na nova tabela criada anteriormente e selecione Design.
No menu do Designer de Tabela , selecione Índices/Chaves .
Na caixa de diálogo Índices/Chaves, selecione Adicionar.
Selecione o novo índice na caixa de texto Chave Primária/Exclusiva Selecionada ou Índice.
Na grade, selecione Criar como Clusterizado e escolha Sim na lista suspensa à direita da propriedade.
Selecione Fechar.
No menu Arquivo, selecione Salvartable_name.
Utilize o Transact-SQL
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar.
USE AdventureWorks2022; GO -- Create a new table with three columns. CREATE TABLE dbo.TestTable ( TestCol1 INT NOT NULL, TestCol2 NCHAR(10) NULL, TestCol3 NVARCHAR(50) NULL ); GO -- Create a clustered index called IX_TestTable_TestCol1 -- on the dbo.TestTable table using the TestCol1 column. CREATE CLUSTERED INDEX IX_TestTable_TestCol1 ON dbo.TestTable (TestCol1); GO
Para obter mais informações, consulte CREATE INDEX.