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

Requêtes multiples VS procédure stockée

Toute recommandation dépend en partie de l'emplacement du script exécutant les requêtes. Si le script exécutant les requêtes se trouve sur le même serveur que l'instance MySQL, vous ne verrez pas beaucoup de différence, mais il y aura toujours une petite surcharge lors de l'exécution de 200 000 requêtes par rapport à 1 procédure stockée.

Mon conseil de toute façon serait de le faire comme une procédure stockée. Vous auriez peut-être besoin de quelques procédures.

  1. Une procédure qui combine les 10 instructions que vous effectuez par opération en 1 appel
  2. Une procédure qui peut itérer sur une table d'arguments à l'aide d'un CURSOR pour alimenter la procédure 1

Votre processus serait

  1. Remplir un tableau avec des arguments qui seraient introduits dans la procédure 1 par la procédure 2
  2. Exécuter la procédure 2

Cela apporterait des avantages en termes de performances car il n'est pas nécessaire de se connecter au serveur MySQL 20000 * 10 fois. Bien que la surcharge par requête puisse être faible, les millisecondes s'additionnent. Même si l'économie est de 0,1 ms par requête, cela représente tout de même 20 secondes de gagnées.

Une autre option pourrait être de modifier vos demandes pour effectuer toutes les opérations de données 20k à la fois (si viable) en ajustant vos 10 requêtes pour extraire les données de la table de base de données mentionnée ci-dessus. La clé de tout cela est d'obtenir les arguments chargés dans un seul lot d'insertion, puis d'utiliser des instructions sur le serveur MySQL dans une procédure pour les traiter sans autres allers-retours.