Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/08/2008, 19:43
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Mysql se cuelga y no realiza la operacion

Es muchísimo más simple hacer un borrado múltiple e inserciones múltiples, que simples. Eso es evidente, ya que la base realiza la operación sobre toda la tabla en tiempo de proceso, mientras que con sentencias por separado pierdes tiempo creando y usando la comunciación hacia la base (incluso usando conexiones permanentes), ya que a cada sentencia corresponde una respuesta, y eso implica tiempo de enlace... quees muchísimo más lento que el de procesamiento.
De hecho, ambas cosas están entre las reglas generales de optimización de consultas de todos los manuales y libros sobre ese tema.

Una operación del tipo:
Código:
DELETE FROM tabla1 WHERE ID IN(1,2,3,4,5,6,7,8,9,10,22,325,555);
Es mucho más rápida incluso que hacer un loop en un store procedure para que haga lo mismo usando contadores como variable de entrada de ID.

Igualmente eso:
Código:
UPDATE tabla1 SET campo1 = '123' WHERE ID IN(1,2,3,4,5,6,7,8,9,10,22,325,555);
En el caso de los inserts, la solución consiste en encadenar conjuntos de VALUES de esta forma:

Código:
INSERT INTO tabla1(ID) VALUES(1), (2), (3), (4), (5), (6), (7), (8), (9);
Este string, obviamente, debe ser construido en la aplicación y no es sencillo de obtener en un SP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)