2017-08-13 2 views
0

Pourquoi devrais-je reconstruire un index dont la moyenne est inférieure à Avg. la fragmentation est inférieure à 1% pour obtenir des performances?Pourquoi devrais-je reconstruire un index dont la moyenne est inférieure à Avg. la fragmentation est inférieure à 1% pour obtenir des performances?

J'ai une table qui avait l'habitude de mettre à jour fréquemment, mais quand je vois en profondeur et vérifie pour avg. la fragmentation, qui est utilisée à moins de 1% même. Lorsque je reconstruis cet index, les performances automatiquement ont été améliorées.

J'ai rejoint cette table avec plus de 2 tables en une seule requête.

Je veux savoir que par MSDN nous ne devrions rien faire à moins de 1% index contenant la table, mais sans reconstruire ma requête ne me donne pas de résultat plus rapidement. J'ai également défini FillFactor = 75.

Répondre

1

La fragmentation affecte rarement les performances. La reconstruction d'un index également met à jour les statistiques associées à l'index et invalide les plans mis en cache associés à l'objet.

+0

Je suis partiellement d'accord avec vous, mais il peut y avoir un effet de fragmentation comme ma compréhension en lisant [MSDN blog] (https://docs.microsoft.com/en-us/sql/relational-databases/indexes/reorganize -and-rebuild-indexes). S'il y a un effet rare dans les performances selon vos commentaires, pourquoi ma requête devient plus rapide après la reconstruction de l'index cluster de ma table !!! – Dhruv

+0

"ma requête devient plus rapide après la reconstruction de l'index clusterisé" les statistiques mises à jour sont la cause la plus probable, mais les plans de requête mis à jour pourraient le faire aussi. –

+0

Merci David pour votre point de vue qui m'a donné un moyen de réfléchir sur un autre aspect, selon vos commentaires, j'ai ré-analyser toute requête et plan d'exécution et je pensais que je devrais ajouter l'index non clusterisé manquant sur cette table et enfin trouvé que ma requête a couru plus rapidement par rapport à l'exécution précédente. Je sais que c'est une mauvaise habitude d'ajouter des index non groupés pour toutes les requêtes qui sont lentes en termes d'exécution. – Dhruv