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
Especifica um conjunto de opções que podem ser aplicadas a um índice que faz parte de uma definição de restrição criada usando ALTER TABLE.
Para obter uma descrição completa das opções de índice, consulte CREATE INDEX.
Transact-SQL convenções de sintaxe
Syntax
{
PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| OPTIMIZE_FOR_SEQUENTIAL_KEY = { ON | OFF }
| SORT_IN_TEMPDB = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE }
[ ON PARTITIONS ( { <partition_number_expression> | <range> }
[ , ...n ] ) ]
| XML_COMPRESSION = { ON | OFF }
[ ON PARTITIONS ( { <partition_number_expression> | <range> }
[ , ...n ] ) ]
| ONLINE = { ON | OFF }
| RESUMABLE = { ON | OFF }
| MAX_DURATION = <time> [ MINUTES ]
}
<range> ::=
<partition_number_expression> TO <partition_number_expression>
<single_partition_rebuild__option> ::=
{
SORT_IN_TEMPDB = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE } }
| ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF }
}
<low_priority_lock_wait>::=
{
WAIT_AT_LOW_PRIORITY ( MAX_DURATION = <time> [ MINUTES ] ,
ABORT_AFTER_WAIT = { NONE | SELF | BLOCKERS } )
}
Arguments
PAD_INDEX = { EM | DESLIGADO }
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores
Especifica o preenchimento do índice. A predefinição é OFF.
ON
A porcentagem de espaço livre especificada por
FILLFACTORé aplicada às páginas de nível intermediário do índice.A de fator de preenchimento OFF ou
não é especificada As páginas de nível intermediário são preenchidas até quase a capacidade, deixando espaço suficiente para pelo menos uma linha do tamanho máximo que o índice pode ter, dado o conjunto de teclas nas páginas intermediárias.
FILLFACTOR = fator de enchimento
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores
Especifica uma porcentagem que indica o quão cheio o Mecanismo de Banco de Dados deve tornar o nível de folha de cada página de índice durante a criação ou alteração do índice. O valor especificado deve ser um valor inteiro de 1 a 100. O padrão é 0.
Note
Os valores de fator de preenchimento 0 e 100 são idênticos em todos os aspetos.
IGNORE_DUP_KEY = { EM | DESLIGADO }
Especifica o tipo de resposta quando uma operação de inserção tenta inserir valores de chave duplicados em um índice exclusivo. A opção IGNORE_DUP_KEY aplica-se apenas a operações de inserção depois que o índice é criado ou reconstruído. A opção não tem efeito ao executar CREATE INDEX, ALTER INDEXou UPDATE. A predefinição é OFF.
ON
Uma mensagem de aviso ocorre quando valores de chave duplicados são inseridos em um índice exclusivo. Apenas as linhas que violam a restrição de exclusividade falham.
OFF
Uma mensagem de erro ocorre quando valores de chave duplicados são inseridos em um índice exclusivo. Toda a operação
INSERTé revertida.
IGNORE_DUP_KEY não pode ser definido como ON para índices criados em um modo de exibição, índices não exclusivos, índices XML, índices espaciais e índices filtrados.
Para exibir IGNORE_DUP_KEY, use sys.indexes.
Na sintaxe compatível com versões anteriores, WITH IGNORE_DUP_KEY é equivalente a WITH IGNORE_DUP_KEY = ON.
STATISTICS_NORECOMPUTE = { LIGADO | DESLIGADO }
Desative ou habilite a opção de atualização automática de estatísticas, AUTO_STATISTICS_UPDATE, para as estatísticas relacionadas aos índices especificados. A predefinição é OFF.
ON
As atualizações automáticas de estatísticas são desativadas depois que o índice é reconstruído.
OFF
As atualizações automáticas de estatísticas são ativadas depois que o índice é reconstruído.
Para restaurar a atualização automática de estatísticas, defina o STATISTICS_NORECOMPUTE como OFFou execute-UPDATE STATISTICS sem a cláusula NORECOMPUTE.
Warning
Se você desabilitar a atualização automática de estatísticas, isso poderá impedir que o Otimizador de Consultas escolha planos de execução ideais para consultas que envolvem a tabela. Você deve usar essa opção com moderação e somente por um administrador de banco de dados qualificado.
Essa configuração não impede uma atualização automática com verificação completa das estatísticas relacionadas ao índice, durante a operação de reconstrução.
ALLOW_ROW_LOCKS = { EM | DESLIGADO }
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores
Especifica se os bloqueios de linha são permitidos. O padrão é ON.
ON
Bloqueios de linha são permitidos ao acessar o índice. O Mecanismo de Banco de Dados determina quando os bloqueios de linha são usados.
OFF
Os bloqueios de linha não são usados.
ALLOW_PAGE_LOCKS = { EM | DESLIGADO }
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores
Especifica se os bloqueios de página são permitidos. O padrão é ON.
ON
Bloqueios de página são permitidos ao acessar o índice. O Mecanismo de Banco de Dados determina quando os bloqueios de página são usados.
OFF
Os bloqueios de página não são usados.
OTIMIZE_FOR_SEQUENTIAL_KEY = { EM | DESLIGADO }
Aplica-se a: SQL Server 2019 (15.x) e versões posteriores
Especifica se a contenção de inserção da última página deve ou não ser otimizada. A predefinição é OFF. Para obter mais informações, consulte a seção Chaves sequenciais do CREATE INDEX artigo.
SORT_IN_TEMPDB = { EM | DESLIGADO }
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores
Especifica se os resultados de classificação devem ser armazenados no tempdb. A predefinição é OFF.
ON
Os resultados de classificação intermediária usados para criar o índice são armazenados em
tempdb. Isso pode reduzir o tempo necessário para criar um índice setempdbestiver em um conjunto de discos diferente do banco de dados do usuário. No entanto, isso aumenta a quantidade de espaço em disco que é usado durante a compilação do índice.OFF
Os resultados da classificação intermediária são armazenados no mesmo banco de dados que o índice.
ONLINE = { LIGADO | DESLIGADO }
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores
Especifica se as tabelas subjacentes e os índices associados estão disponíveis para consultas e modificação de dados durante a operação de índice. A predefinição é OFF.
REBUILD pode ser realizada como uma ONLINE operação.
Note
Não é possível criar índices exclusivos não clusterizados online. Isso inclui índices criados devido a uma UNIQUE ou PRIMARY KEY restrição.
ON
Os bloqueios de tabela de longo prazo não são mantidos durante a operação de índice. Durante a fase principal da operação de índice, apenas um bloqueio de compartilhamento de intenção (IS) é mantido na tabela de origem. Isso permite que as consultas ou atualizações da tabela e dos índices subjacentes prossigam. No início da operação, um bloqueio Shared (S) é mantido no objeto de origem por um curto período de tempo. No final da operação, por um curto período de tempo, um bloqueio S (compartilhado) é adquirido na origem se um índice não clusterizado estiver sendo criado; ou um bloqueio Sch-M (Modificação de Esquema) é adquirido quando um índice clusterizado é criado ou descartado online e quando um índice clusterizado ou não clusterizado está sendo reconstruído. Embora os bloqueios de índice online sejam bloqueios de metadados curtos, especialmente o bloqueio de Sch-M deve aguardar que todas as transações de bloqueio sejam concluídas nesta tabela. Durante o tempo de espera, o bloqueio Sch-M bloqueia todas as outras transações que aguardam atrás desse bloqueio ao acessar a mesma tabela.
ONLINEnão pode ser definido comoONquando um índice está sendo criado em uma tabela temporária local.Note
A reconstrução do índice online pode definir as opções de low_priority_lock_wait descritas mais adiante nesta seção. low_priority_lock_wait gerencia a prioridade de bloqueio S e Sch-M durante a reconstrução do índice online.
OFF
Os bloqueios de tabela são aplicados durante a operação de índice. Isso impede todo o acesso do usuário à tabela subjacente durante a operação. Uma operação de índice offline que cria, reconstrói ou descarta um índice clusterizado, ou recria ou descarta um índice não clusterizado, adquire um bloqueio de modificação de esquema (Sch-M) na tabela. Isso impede todo o acesso do usuário à tabela subjacente durante a operação. Uma operação de índice offline que cria um índice não clusterizado adquire um bloqueio Compartilhado (S) na tabela. Isso impede atualizações na tabela subjacente, mas permite operações de leitura, como
SELECTinstruções.
Para obter mais informações, consulte Como funcionam as operações de índice on-line.
Note
As operações de índice online não estão disponíveis em todas as edições do Microsoft SQL Server. Para obter uma lista de funcionalidades suportadas pelas edições do SQL Server, consulte Edições e funcionalidades suportadas do SQL Server 2022.
RESUMÍVEL = { EM | DESLIGADO}
Aplica-se a: SQL Server 2022 (16.x) e versões posteriores
Especifica se uma operação de ALTER TABLE ADD CONSTRAINT é retomável. Adicionar operação de restrição de tabela é retomável quando ON. Adicionar operação de restrição de tabela não é retomada quando OFF. A predefinição é OFF. Quando a RESUMABLE opção é definida como ON, a opção ONLINE = ON é necessária.
MAX_DURATION quando usado com RESUMABLE = ON (requires ONLINE = ON) indica o tempo (um valor inteiro especificado em minutos) em que uma operação de restrição de adição online retomável é executada antes de ser pausada. Se não for especificado, a operação continua até a conclusão.
MAXDOP é suportado com RESUMABLE = ON também.
Para obter mais informações sobre como habilitar e usar operações retomáveis ALTER TABLE ADD CONSTRAINT , consulte Resumable add table constraints.
MAXDOP = max_degree_of_parallelism
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores
Substitui a opção de configuração do grau máximo de paralelismo durante a operação do índice. Para obter mais informações, consulte Configurar o grau máximo de paralelismo (opção de configuração do servidor). Use MAXDOP para limitar o número de processadores usados em uma execução de plano paralelo. O máximo é de 64 processadores.
max_degree_of_parallelism pode ser:
-
1: Suprime a geração de planos paralelos. -
>1: Restringe o número máximo de processadores usados em uma operação de índice paralelo ao número especificado. -
0(padrão): usa o número real de processadores ou menos com base na carga de trabalho atual do sistema.
Para obter mais informações, consulte Configurar operações de índice paralelo.
Note
As operações de índice paralelo não estão disponíveis em todas as edições do Microsoft SQL Server. Para obter uma lista de funcionalidades suportadas pelas edições do SQL Server, consulte Edições e funcionalidades suportadas do SQL Server 2022.
DATA_COMPRESSION
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores
Especifica a opção de compactação de dados para a tabela especificada, o número da partição ou o intervalo de partições. As opções são as seguintes:
NONE
As partições de tabela ou especificadas não são compactadas. Aplica-se apenas a tabelas de armazenamento de linhas; Não se aplica a tabelas columnstore.
ROW
As partições de tabela ou especificadas são compactadas usando a compactação de linha. Aplica-se apenas a tabelas de armazenamento de linhas; Não se aplica a tabelas columnstore.
PAGE
As partições de tabela ou especificadas são compactadas usando a compactação de página. Aplica-se apenas a tabelas de armazenamento de linhas; Não se aplica a tabelas columnstore.
COLUMNSTORE
Aplica-se a: SQL Server 2014 (12.x) e versões posteriores
Aplica-se somente a tabelas columnstore.
COLUMNSTOREEspecifica para descompactar uma partição que foi compactada com aCOLUMNSTORE_ARCHIVEopção. Quando os dados são restaurados, oCOLUMNSTOREíndice continua a ser compactado com a compactação columnstore que é usada para todas as tabelas columnstore.COLUMNSTORE_ARCHIVE
Aplica-se a: SQL Server 2014 (12.x) e versões posteriores
Aplica-se somente a tabelas columnstore, que são tabelas armazenadas com um índice columnstore clusterizado.
COLUMNSTORE_ARCHIVEcompacta ainda mais a partição especificada para um tamanho menor. Isso pode ser usado para arquivamento ou para outras situações que exigem menos armazenamento e podem dar mais tempo para armazenamento e recuperação
Para obter mais informações sobre compactação, consulte Compactação de dados.
XML_COMPRESSION
Aplica-se a: SQL Server 2022 (16.x) e versões posteriores, Banco de Dados SQL do Azure e Instância Gerenciada SQL do Azure.
Especifica a opção de compactação XML para qualquer colunas de tipo de dados xml na tabela. As opções são as seguintes:
ON
As colunas que usam o tipo de dados xml são compactadas.
OFF
As colunas que usam o tipo de dados xml não são compactadas.
EM PARTIÇÕES ( { <partition_number_expression> | <intervalo> } [ ,...n ] )
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores
Especifica as partições às quais as configurações de DATA_COMPRESSION ou XML_COMPRESSION se aplicam. Se a tabela não estiver particionada, o argumento ON PARTITIONS gerará um erro. Se a ON PARTITIONS cláusula não for fornecida, a DATA_COMPRESSION opção ou XML_COMPRESSION se aplicará a todas as partições de uma tabela particionada.
<partition_number_expression> podem ser especificados das seguintes formas:
- Forneça o número de uma partição, por exemplo:
ON PARTITIONS (2). - Forneça os números de partição para várias partições individuais separadas por vírgulas, por exemplo:
ON PARTITIONS (1, 5). - Forneça intervalos e partições individuais, por exemplo:
ON PARTITIONS (2, 4, 6 TO 8).
<range> podem ser especificados como números de partição separados pela palavra TO, por exemplo: ON PARTITIONS (6 TO 8).
Para definir diferentes tipos de compactação de dados para partições diferentes, especifique a opção DATA_COMPRESSION mais de uma vez, por exemplo:
--For rowstore tables
REBUILD WITH
(
DATA_COMPRESSION = NONE ON PARTITIONS (1),
DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8),
DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
)
--For columnstore tables
REBUILD WITH
(
DATA_COMPRESSION = COLUMNSTORE ON PARTITIONS (1, 3, 5),
DATA_COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (2, 4, 6 TO 8)
)
<single_partition_rebuild__option>
Na maioria dos casos, a reconstrução de um índice também reconstrói todas as partições de um índice particionado. As opções a seguir, quando aplicadas a uma única partição, não reconstroem todas as partições.
SORT_IN_TEMPDBMAXDOPDATA_COMPRESSIONXML_COMPRESSION
low_priority_lock_wait
Aplica-se a: SQL Server 2014 (12.x) e versões posteriores
A reconstrução de um SWITCH índice ou online é concluída assim que não houver operações de bloqueio para esta tabela.
WAIT_AT_LOW_PRIORITY indica que, se a operação de reconstrução de SWITCH índice ou online não puder ser concluída imediatamente, ela aguardará. A operação mantém bloqueios de baixa prioridade, permitindo que outras operações que mantêm bloqueios em conflito com a instrução DDL prossigam. Omitir a opção WAIT AT LOW PRIORITY é equivalente a WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).
MAX_DURATION = tempo [ MINUTOS ]
O tempo de espera (um valor inteiro especificado em minutos) que o bloqueio de reconstrução do SWITCH índice online que deve ser adquirido aguarda ao executar o comando DDL. A SWITCH operação de reconstrução de índice on-line ou tenta ser concluída imediatamente. Se a operação estiver bloqueada por algum MAX_DURATION tempo, uma das ABORT_AFTER_WAIT ações será executada.
MAX_DURATION tempo é sempre em minutos, e a palavra MINUTES pode ser omitida.
ABORT_AFTER_WAIT = { NENHUM | PRÓPRIO | BLOQUEADORES }
NONE
Continua a operação de reconstrução do
SWITCHíndice on-line sem alterar a prioridade de bloqueio (usando a prioridade regular).SELF
Sai da operação DDL de reconstrução de índice on-line que está sendo executada
SWITCHno momento sem tomar nenhuma ação.BLOCKERS
Mata todas as transações do usuário que bloqueiam atualmente a operação DDL de reconstrução do
SWITCHíndice on-line para que a operação possa continuar.BLOCKERSrequer aALTER ANY CONNECTIONpermissão.