Comment faire : Utiliser KEEPFIXED PLAN pour désactiver les recompilations de procédures stockées

Traductions disponibles Traductions disponibles
Numéro d'article: 276220 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Dans certaines situations où les procédures stockées sont recompilés, le coût de recompilation peut compenser l'avantage est dérivée de cette manière. Notez que car SQL Server Service Pack 2 (SP2) et antérieures ne prennent pas en charge recompilation au niveau instruction, la procédure stockée entier doit être recompilée lorsqu'une recompilation est déclenchée. Par conséquent, le nombre de recompilations sont déclenchées pendant l'exécution d'une procédure stockée et la longueur de la procédure stockée peut parfois augmenter la durée globale de l'exécution de la procédure stockée.

À partir de SQL Server 7.0 SP3, un nouvel indicateur de requête KEEPFIXED PLAN, a été introduit dans les situations où le coût de recompilation est plus que le coût de l'utilisation de la planification existante.

L'indicateur de requête KEEPFIXED PLAN force l'optimiseur de requêtes jamais recompiler une requête dues à des modifications dans les statistiques ou des modifications de colonnes indexées (par exemple, mise à jour, suppression ou insertion). Pour plus d'informations sur la façon de résoudre la recompilation de procédure stockée, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
243586INF: Résolution des problèmes de recompilation de procédure stockée

Exemple de code qui utilise des indicateurs KEEPFIXED PLAN

L'exemple de code dans cette section provient de l'article suivant de la base de connaissances Microsoft :
243586INF: Résolution des problèmes de recompilation de procédure stockée
   drop procedure RowModifications 
   go
   create procedure RowModifications as
   -- assume SomeTable exists with the same definition as #t, 
   -- and has over 1000 rows
   create table  #t (a int )
   select * from  #t
   insert  #t select * from retest
   select count(*) from #t  where a = 37
   --option (keepfixed plan)
   go
   exec RowModifications
   go
   exec RowModifications
   go 
 
				
Pour la deuxième exécution de la procédure RowModifications, le code suivant provoque la recompilation :
  select count(*) from #t where a = 37
				
si vous utilisez ce code :
Option (keepfixed plan)
				
dans cette requête, la requête n'entraîne pas la recompilation à nouveau :
select count(*) from #t  where a = 37 option (keepfixed plan) 
				
note cet indicateur de requête est appliqué sur le niveau d'instruction et n'affecte pas la portée de la procédure stockée ensemble. Si vous souhaitez que cette option pour affecter plusieurs instructions dans une procédure stockée, chaque instruction doit implémenter l'indicateur de SQL Server consiste à appliquer à un comportement. Cette indication n'est pas disponible pour SQL Server 7.0 Service Pack 2 (SP2) ou version antérieure.

Propriétés

Numéro d'article: 276220 - Dernière mise à jour: mercredi 19 juillet 2006 - Version: 5.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 7.0 Standard
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 2000 Édition 64 bits
Mots-clés : 
kbmt kbhowtomaster kbinfo KB276220 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 276220
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com