2010-02-02 6 views
1

Est-ce que quelqu'un sait comment réduire le nombre d'exécutions que vous pouvez voir dans le plan d'exécution d'une requête SQL dans MS SQL Server?Comment réduire le nombre d'exécutions dans le plan d'exécution MS SQL

Nous avons une requête qui s'exécute lentement sur un serveur de production (d'autres vont bien). Lors de la vérification du plan d'exécution, nous constatons que l'une des premières étapes est une analyse d'index clusterisée. Sur les serveurs qui fonctionnent correctement, cette analyse est exécutée une fois. Sur celui qui court lentement, il est exécuté 4 fois.

Nous lisons ici (http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p2.aspx) que vous devriez essayer de réduire, mais nous ne trouvons pas de conseils sur la façon de procéder.

Les deux serveurs exécutent la même version de Windows (2003) et SQL Server (2000).

Toute aide serait appréciée.

+0

pouvez-vous poster votre requête? – AdaTheDev

Répondre

0

Désolé je réponds à moi-même. Merci Arthur pour les liens, ils ont été utiles (j'ai donc voté votre réponse). Nous avons mis à jour les statistiques, mais cela n'a pas aidé. Nous avons vérifié la défragmentation avec DBCC SHOWCONTIG, mais ce n'était pas très différent des autres bases de données.

Je suis désolé de ne pas publier la requête AdaTheDev, mais je devrais changer toutes les colonnes et d'autres choses (parce que c'est assez critique), et nous avons trouvé une solution maintenant.

Nous avons remarqué que la table contenait beaucoup plus d'enregistrements que les autres bases de données. Nous avons ajouté des index sur les colonnes correctes. Nous avons fait un joignons comme:

inner join table2 t2 on t1.t1Id = t2.t1Id and t2.someOtherId = @parameter 
where t2.aThirdId = @otherParameter 

Nous avons donc ajouté trois indices distincts pour chaque colonne Id, qu'il accélérait de 30 ans à 3-5 ans (nous avons eu un index sur t1Id et someOtherId ensemble bien). En fin de compte, nous avons également fait un nettoyage de la table, car de nombreux enregistrements ont été logiquement supprimés et ne sont plus nécessaires. Mais les index ont fait l'affaire.