sql >> Base de Datos >  >> RDS >> Mysql

Consultas múltiples VS Procedimiento almacenado

Cualquier recomendación depende parcialmente de dónde reside el script que ejecuta las consultas. Si el script que ejecuta las consultas está en el mismo servidor que la instancia de MySQL, entonces no notará una gran diferencia, pero aún habrá una pequeña sobrecarga al ejecutar 200k consultas en comparación con 1 procedimiento almacenado.

Mi consejo de cualquier manera sería hacerlo como un procedimiento almacenado. Tal vez necesite un par de procedimientos.

  1. Un procedimiento que combina las 10 declaraciones que realiza por operación en 1 llamada
  2. Un procedimiento que puede iterar sobre una tabla de argumentos usando un CURSOR para introducir en el procedimiento 1

Su proceso sería

  1. Rellene una tabla con argumentos que se introducirían en el procedimiento 1 mediante el procedimiento 2
  2. Ejecutar procedimiento 2

Esto generaría beneficios de rendimiento ya que no es necesario conectarse al servidor MySQL 20000*10 veces. Si bien la sobrecarga por solicitud puede ser pequeña, los milisegundos se suman. Incluso si el ahorro es de 0,1 ms por solicitud, todavía se ahorran 20 segundos.

Otra opción podría ser modificar sus solicitudes para realizar todas las operaciones de datos de 20k a la vez (si es viable) ajustando sus 10 consultas para extraer datos de la tabla de la base de datos mencionada anteriormente. La clave de todo esto es cargar los argumentos en una sola inserción por lotes y luego usar declaraciones en el servidor MySQL dentro de un procedimiento para procesarlos sin más viajes de ida y vuelta.