Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/07/2010, 07:51
enridp
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años, 5 meses
Puntos: 11
Insertar en tablas relacionadas N:M (maxima performance)

Hola a todos!
Estoy buscando si hay alguna forma más eficiente de hacer el/los siguiente INSERT:

Ante todo la estructura:


Digamos que deseo insertar un nuevo usuariro, con su direccion, entonces esto es lo que hago:

INSERT INTO usuarios (nombre) VALUES ('juancito')
ultimoIDUsuario = SELECT LAST_INSERT_ID()
INSERT INTO direcciones (direccion) VALUES ('callecita 155')
ultimoIDDireccion = SELECT LAST_INSERT_ID()
INSERT INTO usuarios_has_direcciones (usuarios_idusuarios, direcciones_iddirecciones) VALUES (ultimoIDUsuario, ultimoIDDireccion)


El problema es que son 3 inserts y 2 selects para insertar solo un usuario.
Ademas que si uso INSERT... ON DUPLICTE UPTADE ya tengo que tener cuidado con el LasID

Pero lo que mas me preocupa es la performance. Porque por querere normalizar mis tablas termine teniendo 3 tablas en lo que podria haber sido una sola (bastante fea pero bueno, tener el usuario y las direcciones en una sola tabla).

Pero normalizando tengo que hacer 3 inserts y 2 selects mientras que con una tabla con un Insert ya alcanza.
Estoy haciendo algo mal? se puede mejorar? o esto es así y es el precio a pagar por tener una BD mas organizada?

Saludos !!!
Enrique.