Estou tentando atualizar uma tabela com cerca de 6,5 milhões de linhas em um tempo razoável, mas estou tendo alguns problemas. Estamos adicionando uma nova coluna a uma tabela existente e, em seguida, definindo um valor para todas as linhas com base nos dados de uma coluna em outra tabela.
UPDATE TOP (20000) c
SET c.NewColumn = ISNULL(p.Col1, p.Col2)
FROM dbo.Child c
INNER JOIN dbo.Parent p on c.FKId = p.Id
WHERE c.NewColumn IS NULL
em um loop, como este artigo . A atualização ainda estava em execução após 2,5 horas. Eu estou querendo saber se desabilitar os índices dbo.Child
causaria um impacto. NewColumn não tem índices, nem terá, mas existem outros índices (cerca de 5) emdbo.Child
O SQL Server é inteligente o suficiente para ver que não precisa atualizar os outros índices (já que eles não fazem parte do UPDATE), ou nos beneficiaríamos desabilitando temporariamente os índices enquanto fazemos as instruções de atualização?
Este é o SQL Server 2012, mas o banco de dados em questão está no modo de compatibilidade de 2008.