Configurando opções de índice

Ao projetar, criar ou modificar um índice, existem várias opções de índice a serem consideradas. Essas opções podem ser especificadas quando você cria ou recria um índice. Além disso, você pode definir algumas opções de índice a qualquer momento utilizando a cláusula SET da instrução ALTER INDEX.

Opção de índice

Descrição

Configuração armazenada em metadados

Tópico relacionado

PAD_INDEX

Define a porcentagem de espaço livre nas páginas de nível intermediário durante a criação do índice.

Sim

Fator de Preenchimento

FILLFACTOR

Define a porcentagem de espaço livre no nível folha de cada página do índice durante a criação do índice.

Sim

Fator de Preenchimento

SORT_IN_TEMPDB

Determina onde serão armazenados os resultados intermediários da classificação, gerados durante a criação do índice.

Quando estiver ON, os resultados da classificação serão armazenados no tempdb. Quando estiver OFF, os resultados da classificação serão armazenados no grupo de arquivos ou no esquema de partição no qual o índice resultante será armazenado.

ObservaçãoObservação
Se uma operação de classificação não for necessária ou puder ser executada na memória, SORT_IN_TEMPDB será ignorado.

Não

tempdb e criação de índice

IGNORE_DUP_KEY

Especifica a resposta de erro quando uma operação de inserção tenta inserir valores da chave duplicada em um índice exclusivo. A opção IGNORE_DUP_KEY aplica-se apenas às operações de inserção depois que o índice é criado ou recriado. O padrão é OFF.

Sim

CREATE INDEX

STATISTICS_NORECOMPUTE

Especifica se as estatísticas de índice desatualizadas devem ser recalculadas automaticamente.

Sim

Estatísticas do índice

DROP_EXISTING

Indica que o índice existente deve ser descartado e recriado.

Não

Reorganizando e recriando índices

ONLINE

Determina se é permitido o acesso simultâneo de usuários aos dados da tabela subjacente ou de índice cluster e qualquer índice não cluster associado durante as operações de índice.

ObservaçãoObservação
As operações de índice online estão disponíveis somente nas edições Enterprise, Developer e Evaluation do SQL Server.

Não

Executando operações de índice online

ALLOW_ROW_LOCKS

Determina se são utilizados bloqueios de linhas ao acessar os dados do índice.

Sim

CREATE INDEX

Personalizando bloqueio de um índice

ALLOW_PAGE_LOCKS

Determina se são utilizados bloqueios de página ao acessar os dados do índice.

Sim

CREATE INDEX

Personalizando bloqueio de um índice

MAXDOP

Define o número máximo de processadores que o processador de consultas pode utilizar para executar uma única instrução de índice. Podem ser utilizados menos processadores dependendo da carga de trabalho atual do sistema.

ObservaçãoObservação
As operações de índice paralelas estão disponíveis somente nas edições Enterprise, Developer e Evaluation do SQL Server.

Não

Modificando índices

DATA_COMPRESSION

Especifica a opção de compactação de dados para a tabela, o número de partição ou o intervalo de partições especificado. As opções são NONE, ROW e PAGE.

Sim

Criando tabelas e índices compactados

Para definir opções em um índice

Definindo opções sem recriação

Utilizando a cláusula SET na instrução ALTER INDEX, você pode definir algumas das seguintes opções de índice sem recriar o índice:

  • ALLOW_PAGE_LOCKS

  • ALLOW_ROW_LOCKS

  • IGNORE_DUP_KEY

  • STATISTICS_NORECOMPUTE

Essas opções são aplicadas imediatamente ao índice. Só podem ser especificadas outras opções de índice, como FILLFACTOR e ONLINE, quando um índice é criado ou recriado.

Exibindo as configurações das opções de índice

Nem todos os valores de opções de índice são armazenados em metadados. Os valores armazenados em metadados podem ser exibidos nas exibições do catálogo apropriadas. Para examinar as configurações atuais das opções de índices existentes, utilize a exibição do catálogo sys.indexes. Para examinar o valor atual de STATISTICS_NORECOMPUTE, utilize a exibição do catálogo sys.stats. Para obter mais informações, consulte Exibindo informações de índice.

Exemplos

O exemplo a seguir define as opções ALLOW_ROW_LOCKS e IGNORE_DUP_KEY para o índice AK_Product_ProductNumber na tabela Production.Product.

USE AdventureWorks2008R2;
GO
--Verify the current values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes 
WHERE name = N'AK_Product_ProductNumber';
GO
--Set the ALLOW_ROW_LOCKS option OFF and the IGNORE_DUP_KEY option ON.
ALTER INDEX AK_Product_ProductNumber       
ON Production.Product       
SET (ALLOW_ROW_LOCKS = OFF, IGNORE_DUP_KEY = ON);
GO
--Verify the new values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes 
WHERE name = N'AK_Product_ProductNumber';
GO