Mysql
 sql >> Base de données >  >> RDS >> Mysql

instructions préparées émulées vs instructions préparées réelles

Vous avez raison, les vraies instructions préparées doivent être prises en charge par le serveur. Une vraie préparation signifie interroger la base de données en deux étapes.

La première étape consiste à envoyer un modèle de requête, que le serveur peut pré-compiler. Le moteur de base de données prépare également à l'avance le plan d'exécution (principalement, quels index seront utilisés pour servir la requête réelle).

La deuxième étape consiste à donner des valeurs réelles aux espaces réservés et à exécuter la requête réelle avec ces paramètres.

Cela permet généralement une exécution plus rapide de plusieurs requêtes similaires, car 1. la requête a déjà été pré-compilée (le plan d'exécution est déjà calculé) et 2. seules les valeurs des paramètres sont envoyées par la suite.

Une requête émulée n'est qu'un sucre syntaxique, qui permet uniquement un envoi plus facile (pas une exécution plus rapide) de plusieurs requêtes similaires successives. Des instructions SQL complètes sont envoyées au serveur chaque fois qu'une requête émulée est exécutée.

Lorsque le serveur ne prend pas en charge les instructions préparées réelles, il est toujours recommandé d'utiliser des instructions préparées émulées, car le pilote s'occupe toujours d'échapper les valeurs pour vous, ce qui rend l'injection SQL moins probable.