Acabei de ter uma situação em que tive que incluir uma coluna em um índice. Isso exigia descartar o índice e recriá-lo. Isso me fez pensar, certamente isso é muito trabalho desnecessário.
Digamos que eu tenha criado o novo índice primeiro e depois descartado o antigo. Vamos supor também que eu tenha alguma forma de indicar que o índice antigo não será descartado até que o novo tenha sido criado.
O servidor obteria algum benefício de desempenho usando o índice antigo ao criar o novo?
Você pode fazer
Não há nenhuma vantagem particular de fazê-lo no primeiro caso.
Embora o índice existente forneça a ordem de classificação desejada, ele não será usado para isso, pois não contém a coluna recém-adicionada
B
e, portanto, exigiria uma pesquisa de volta à tabela base para cada linha. O plano mostra uma verificação e classificação da tabela.O uso de
DROP_EXISTING
aqui pode fornecer benefícios se você estiver removendo uma coluna incluída - como no segundoDROP_EXISTING
exemplo (já que o índice original teria a ordem desejada e cobriria todas as colunas).O plano para isso mostra que o índice original foi lido para criar a substituição.