Quando temos o ajuste automático definido como ON para criação de índice, o banco de dados de hiperescala SQL do Azure criou cerca de 10 índices para algumas de nossas tabelas grandes. Ao analisar os índices, alguns deles diferem apenas nas colunas 'incluídas', enquanto as colunas do índice eram iguais. Essa proliferação de índice prejudicará as operações INSERT e UPDATE nessas tabelas.
Existe uma opção no Azure para combinar/otimizar índices, em vez de eliminarmos e recriarmos manualmente índices melhores para muitas tabelas? A partir de agora, desligar a criação automática de índice parece ser a única coisa a fazer.
Existem outras sugestões?
Esse recurso de indexação automática pode ser bom em uma situação em que você não tem nenhum DBA (desenvolvedor, administrador de sistema, etc.), que pode manter os índices manualmente, verificando DMVs de índice ausentes e descobrindo como combinar combinações de índice sugeridas em índices que beneficiariam a maioria das consultas.
Infelizmente, o recurso não é inteligente o suficiente para fazer a parte “humana” do trabalho neste momento. Ele criará índices, como você mencionou, em que "alguns deles diferem apenas nas colunas 'incluídas', enquanto as colunas do índice eram iguais".
Se você achar que muitos índices criados realmente prejudicam as operações INSERT e UPDATE ou usam muito espaço de armazenamento, desative o recurso e mantenha (crie, modifique, monitore o uso, elimine) os índices manualmente.
Use esta consulta para encontrar o índice usando o maior número de leituras:
E então isso para encontrar o índice que usa mais gravações:
Você acha que estão faltando índices? Use esta consulta para encontrar índices ausentes:
Não coloque índices aleatórios no seu banco de dados. Eles disseram que a IA pode fazer isso automaticamente por você. Mas esse recurso do Azure, que deveria encontrar os índices ausentes corretos, existe desde sempre. Há muito tempo, esse fenômeno da IA começou. Tenha certeza de que isso nunca irá ajudá-lo.