Partager via


Paramétrage simple

Dans SQL Server 2005, l'utilisation de paramètres ou de marqueurs de paramètres dans les instructions Transact-SQL augmente la capacité du moteur relationnel à associer les nouvelles instructions SQL aux plans d'exécution préalablement compilés existants.

ms186219.security(fr-fr,SQL.90).gifRemarque relative à la sécurité :
L'utilisation de paramètres ou de marqueurs de paramètre pour stocker des valeurs tapées par des utilisateurs finaux est plus sécurisée que la concaténation des valeurs dans une chaîne exécutée ensuite à l'aide d'une méthode d'API d'accès aux données, de l'instruction EXECUTE ou de la procédure stockée sp_executesql.

Si vous exécutez une instruction SQL sans paramètres, SQL Server 2005 paramètre cette instruction en interne afin d'augmenter la possibilité de l'associer à un plan d'exécution existant. Ce processus est appelé « paramétrage simple ». Dans SQL Server 2000, le processus était désigné par le terme « autoparamétrage ».

Imaginons l'instruction suivante :

SELECT * FROM AdventureWorks.Production.Product 
WHERE ProductSubcategoryID = 1

Vous pouvez spécifier comme paramètre la valeur 1 de la fin de l'instruction. Le moteur relationnel crée le plan d'exécution de ce lot comme si vous aviez spécifié un paramètre à la place de la valeur 1. Grâce à ce paramétrage simple, SQL Server 2005 reconnaît que les deux instructions suivantes génèrent exactement le même plan d'exécution, et il réutilise le premier plan pour la seconde instruction :

SELECT * FROM AdventureWorks.Production.Product 
WHERE ProductSubcategoryID = 1

SELECT * FROM AdventureWorks.Production.Product 
WHERE ProductSubcategoryID = 4

Lors du traitement d'instructions SQL complexes, il est possible que le moteur relationnel rencontre certaines difficultés pour déterminer les expressions qui peuvent être paramétrées. Afin d'augmenter la capacité du moteur relationnel à associer des instructions SQL complexes à des plans d'exécution existants et inutilisés, spécifiez les paramètres de manière explicite à l'aide de sp_executesql ou de marqueurs de paramètres. Pour plus d'informations, consultez Réutilisation des paramètres et des plans d'exécution.

ms186219.note(fr-fr,SQL.90).gifRemarque :
Lorsque les opérateurs arithmétiques +, -, *, / ou % sont utilisés pour réaliser une conversion implicite ou explicite de valeurs de constante int, smallint, tinyint ou bigint en types de données float, real, decimal ou numeric, SQL Server applique des règles spécifiques pour calculer le type et la précision des résultats des expressions. Toutefois, ces règles diffèrent selon que la requête est paramétrée ou non. Par conséquent, dans certains cas, des expressions similaires dans les requêtes peuvent produire des résultats différents. Pour plus d'informations, consultez int, bigint, smallint et tinyint (Transact-SQL).

Avec le comportement par défaut du paramétrage simple, SQL Server paramètre une classe relativement réduite de requêtes. Toutefois, vous pouvez attribuer la valeur FORCED à l'option PARAMETERIZATION de la commande ALTER DATABASE pour spécifier que toutes les requêtes d'une base de données soient paramétrées, sous réserve de certaines contraintes. Cette opération peut améliorer les performances des bases de données soumises à des volumes élevés de requêtes simultanées en réduisant la fréquence des compilations de requête. Pour plus d'informations, consultez Paramétrage forcé.

Une autre solution consiste à spécifier que ne soient paramétrées qu'une requête et toutes autres requêtes dont la syntaxe ne se différencie que par les valeurs des paramètres. Pour plus d'informations, consultez Indication du comportement du paramétrage de requêtes grâce aux repères de plan.

Voir aussi

Référence

Objet SQLServer:SQL Statistics

Aide et Informations

Assistance sur SQL Server 2005