Suponha que eu tenha uma tabela Stuff
com uma coluna City
e nenhum índice incluindo essa coluna. Eu preencho a tabela. Então eu decido criar um índice:
CREATE INDEX [StuffOnCityIndex] ON [dbo].[Stuff](City ASC);
e o banco de dados confirma que foi bem- CREATE INDEX
sucedido.
O índice recém-criado incluirá imediatamente todas as entradas existentes da tabela ou será construído lentamente "em segundo plano"? Em outras palavras, se eu achar que a criação de um índice melhorará o desempenho, verei essa melhoria imediatamente após a CREATE INDEX
conclusão?
O CREATE INDEX é a unidade de trabalho que segue o ACID .
Portanto, quando for concluído, ele foi concluído (ou falhou) completamente ("Atomic" em ACID). Nenhum trabalho adicional é necessário para preencher ou preparar o índice ("Consistente" no ACID)
Se melhora o desempenho depende de sua adequação para as consultas que você está executando, distribuição de dados, etc. Essa é uma área totalmente nova ...
O índice será totalmente construído assim que
CREATE INDEX
terminar.Você só verá uma melhoria de desempenho se sua instrução SQL puder usar o índice recém-criado.
Você precisará examinar o plano de execução para descobrir se o índice é usado.