web-dev-qa-db-fra.com

Devrais-je reconstruire l'index après tronquage / grand insert?

J'ai une procédure stockée qui tronque certaines tables avec environ 1,75 m de lignes dans chacune avant d'insérer de nouvelles données (basées sur des données dans d'autres tables, calculs, etc.)

Le contour de base est très simple:

  • TRONQUER TABLES
  • Insérez des rangées de 1,75 m dans 'lots' d'environ 75 000 par heure.

Je me demande si je devrais ré-construire explicitement les index à tout moment dans ce processus? par exemple.

  • TRONQUER TABLES
  • ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [ou quelque chose de similaire]
  • Insérer des rangées de 1,75m

ou peut-être

  • ALTER INDEX ALL ON xxx DISABLE
  • TRONQUER TABLES
  • Insérer des rangées de 1,75m
  • ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [ou quelque chose de similaire]

Toute assistance appréciée ... pas un DBA - un dev qui sait que DB est assez bien est plus précis!

10
BlueChippy

Comme avec la plupart des questions de ce type, cela dépend. Il est peu probable que vous alliez insérer les données dans la commande "correcte" de tous les index impliqués, ce qui signifie que tous ces index sont susceptibles de rencontrer beaucoup de scission de page lors du processus d'insertion. Supposons donc que vous insérez dans l'ordre d'index en cluster. Vous pouvez désactiver tous les index non clusters, tronquer, faire votre insertion, puis reconstruire tous vos index non clusters. Bien entendu, essayer les deux approches vous diront que la vérité est plus rapide quelle que soit la théorie derrière elle. :)

6
Ben Thul

Plan Basic avec tous les index activés peut être lent et peut entraîner une fragmentation.

Alter Index Recuilild sur une table tronquée et donc vide ne sert donc de but. Vous devez donc modifier votre plan A. Cela devrait être:

  • TRONQUER
  • Insérer
  • Alter index reconstruisant

Cela pourrait rester lent, mais au moins vous obtenez des indices tranchants.

Le plan B est bien. Testez tous les trois et voyez ce qui est le plus rapide et qui donne la fragmentation du moins d'index. Puis décidez si la reconstruction en vaut la peine.

1
Orbilin