Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode criar índices clusterizados em tabelas no SQL Server 2014 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 recriado ou reorganizado sob demanda para controlar a fragmentação da tabela. Um índice clusterizado também pode ser criado em um modo de exibição. (Índices clusterizados são definidos no tópico Índices Clusterizados e Não Clusterizados Descritos.)
Nesse Tópico
Antes de começar:
Para criar um índice clusterizado em uma tabela usando:
Antes de começar
Implementações típicas
Os índices clusterizados são implementados das seguintes maneiras:
Restrições PRIMARY KEY e UNIQUE
Quando você cria uma restrição PRIMARY KEY, um índice clusterizado exclusivo na coluna ou colunas é criado automaticamente se um índice clusterizado na tabela ainda não existe e você não especifica um índice não clusterizado exclusivo. A coluna de chave primária não pode permitir valores NULL.
Quando você cria uma restrição UNIQUE, um índice não clusterizado exclusivo é criado para impor uma restrição UNIQUE por 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 do 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 sobre uma coluna diferente da coluna de chave primária se uma restrição de chave primária não clusterizada tiver sido especificada.
Limitações e restrições
Quando uma estrutura de índice clusterizado é criada, o espaço em disco para as estruturas antigas (origem) e novas (destino) é necessário em seus respectivos arquivos e grupos de arquivos. A estrutura antiga não é desalocada até que a transação completa seja confirmada. 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 um heap com vários índices não clusterizados existentes, todos os índices não clusterizados deverão ser recriados para que contenham o valor da chave de clustering em vez do RID (identificador de linha). 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 recriados como parte da operação DROP. Isso pode levar um tempo considerável em tabelas grandes.
A maneira preferencial de criar índices em tabelas grandes é começar com o índice clusterizado e, em seguida, criar índices não clusterizados. Considere definir a opção ONLINE como ON ao criar índices em tabelas existentes. Quando configurado para ON, não são mantidos bloqueios de tabela de longo prazo. Isso permite que as consultas ou atualizações na tabela subjacente continuem. Para obter mais informações, consulte Perform Index Operations Online.
A chave de índice de um índice clusterizado não pode conter
varcharcolunas que tenham dados existentes na unidade de alocação ROW_OVERFLOW_DATA. Se um índice clusterizado for criado em umavarcharcoluna e os dados existentes estiverem na unidade de alocação IN_ROW_DATA, as ações subsequentes de inserção ou atualização na coluna que enviariam 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 gerenciamento dinâmico sys.dm_db_index_physical_stats (Transact-SQL).
Segurança
Permissões
Requer a permissão ALTER na tabela ou exibição. O usuário deve ser membro da função de servidor fixa sysadmin ou das funções de banco de dados fixas db_ddladmin e db_owner .
Como usar o SQL Server Management Studio.
Para criar um índice clusterizado usando o 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 mouse na pasta Índices , aponte para Novo Índice e selecione Índice Clusterizado....
Na caixa de diálogo Novo Índice , na página Geral , insira o nome do novo índice na caixa de nome índice .
Em Colunas de chave do índice, clique em Adicionar....
Na caixa de diálogo Selecionar Colunasde table_name, marque a caixa de seleção da coluna da tabela a ser adicionada ao índice agrupado.
Clique em OK.
Na caixa de diálogo Novo Índice , clique em OK.
Para 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 mouse na pasta Tabelas e clique em Nova Tabela....
Crie uma nova tabela como faria normalmente. Para obter mais informações, veja Criar tabelas (Mecanismo de Banco de Dados).
Clique com o botão direito do mouse na nova tabela criada acima e clique em Design.
No menu Designer de Tabela , clique em Índices/Chaves.
Na caixa de diálogo Índices/Chaves , clique em 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.
Clique em Fechar.
No menu Arquivo , clique em Salvartable_name.
Usando Transact-SQL
Para criar um índice clusterizado
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.
USE AdventureWorks2012; 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 (Transact-SQL).