Agrupación de consultas SQL

A veces, una aplicación requiere bastantes consultas SQL antes de que pueda hacer algo útil. Me preguntaba si hay una manera de enviarlos como un lote a la base de datos, para evitar la sobrecarga de ir y venir entre el cliente y el servidor.

Si no hay una forma estándar de hacerlo, estoy usando los enlaces de python de MySQL.

PD: sé que MySQL tiene una función executemany(), pero eso es solo para la misma consulta ejecutada muchas veces con diferentes parámetros, ¿verdad?

preguntado el 03 de mayo de 12 a las 16:05

Sería más rápido/más eficiente en la mayoría de los casos ejecutar las consultas en paralelo. -

¿Alguna vez has pensado en los procedimientos almacenados? -

No sé cómo funciona el conector mysql-python, pero en muchos casos uno puede enviar simultáneamente varias consultas separadas por ; (quizás después de habilitar una configuración para permitir tal). -

Los procedimientos almacenados son una opción, pero me preguntaba si hay una forma intermedia sin usarlos. -

@eggyal: Lo acabo de probar, pero arroja un error de "comandos no sincronizados". No creo que sea tan simple :) -

1 Respuestas

Este proceso funciona mejor en insertos

  • Convierta todas sus consultas SQL en procedimientos almacenados. Estos eventualmente se convertirán en procedimientos almacenados secundarios.
  • Cree un procedimiento de almacenamiento maestro para ejecutar todos los demás procedimientos almacenados.
  • Modificar el procedimiento almacenado maestro para aceptar los valores requeridos por los procedimientos almacenados secundarios
  • Modifique el procedimiento almacenado maestro para aceptar comandos usando declaraciones "si" para saber qué procedimientos almacenados secundarios ejecutar

Si necesita devolver datos de la base de datos, use 1 procedimiento almacenado a la vez.

contestado el 03 de mayo de 12 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.