Desabilitando índices
A desabilitação de um índice impede o acesso do usuário ao índice, e para índices clusterizados, aos dados da tabela subjacente. A definição do índice permanece nos metadados e as estatísticas do índice são mantidas em índices não-clusterizados. A desabilitação de um índice não-clusterizado ou cluster em uma exibição exclui fisicamente os dados do índice. A desabilitação de um índice clusterizado em uma tabela impede o acesso aos dados; os dados ainda permanecem na tabela, mas estão indisponíveis para operações de DML até que o índice seja descartado ou recriado. Para recriar e habilitar um índice desabilitado, use a instrução ALTER INDEX REBUILD ou CREATE INDEX WITH DROP_EXISTING.
Um ou mais índices podem ser desabilitados nas seguintes circunstâncias:
O Mecanismo de banco de dados do SQL Server desabilita o índice automaticamente durante uma atualização do SQL Server.
Você desabilita manualmente o índice usando ALTER INDEX.
Atualização do SQL Server desabilita um índice
Durante uma atualização para uma nova versão ou service pack do SQL Server, o Mecanismo de Banco de Dados automaticamente identifica e desabilita um índice, inclusive os índices em exibições, quando o índice ou a definição de exibição contiver:
Uma expressão para a qual o Mecanismo de Banco de Dados já não pode garantir a integridade de dados do índice.
Por exemplo, considere que um índice usa uma função de sistema e essa função foi alterada na atualização de modo que agora retorna um resultado diferente. O Mecanismo de Banco de Dados desabilitará o índice durante a atualização porque ele pode conter dados inválidos após a atualização.
Um agrupamento que foi alterado como parte da atualização de modo que o índice já não está classificado corretamente.
Quando um índice for desabilitado durante o processo de atualização, uma mensagem de aviso exibirá o nome do índice e o nomes de qualquer restrição associada para que você possa recriá-los após o término da atualização. A recriação do índice e habilitação de quaisquer restrições corrigirá os dados invalidados durante a atualização.
Uma restrição CHECK poderá ser desabilitada caso a definição contenha uma expressão para a qual o Mecanismo de Banco de Dados já não puder garantir a integridade dos dados. Para habilitar a restrição, use a instrução ALTER TABLE CHECK.
Usando ALTER INDEX para desabilitar um índice
Você pode desabilitar manualmente um índice a qualquer momento usando a instrução ALTER INDEX DISABLE.
Observação |
---|
Se uma tabela estiver em uma publicação de replicação transacional, você não poderá desabilitar nenhum índice associado a colunas de chave primária. Esses índices são necessários para a replicação. Para desabilitar um índice, você deve primeiramente descartar a tabela da publicação. Para obter mais informações, consulte Publicando dados e objetos de banco de dados. |
Você pode querer desabilitar um índice para executar o seguinte:
Corrigir um erro de E/S do disco (erro 823 ou 824) em uma página de índice e recriar o índice posteriormente.
Remover o índice temporariamente para fins de solução de problemas.
Recriar índices não-clusterizados.
Quando um índice não-clusterizado não é desabilitado, a operação de recriação exige espaço em disco temporário suficiente para armazenar o índice antigo e o novo. Porém, ao desabilitar e recriar um índice não-clusterizado em transações separadas, o espaço em disco disponível pela desabilitação do índice poderá ser reutilizado pela recriação subseqüente ou qualquer outra operação. Nenhum espaço adicional é exigido, com exceção do espaço em disco temporário para classificação; este geralmente é de 20 por cento do tamanho do índice.
Se o espaço em disco for limitado, isso pode ser útil para desabilitar o índice não-clusterizado antes da recriação. Por exemplo, você tem um procedimento armazenado que recria todos os índices não-clusterizados em uma ou mais tabelas. Ao desabilitar esses índices primeiro em uma transação separada da operação de recriação, você poderá reduzir significativamente a quantidade de espaço em disco temporário para recriá-los.
Para desabilitar um índice
Consulte também