Ver Mensaje Individual
  #9 (permalink)  
Antiguo 19/11/2013, 17:21
MarronsDispatcher
 
Fecha de Ingreso: noviembre-2012
Mensajes: 40
Antigüedad: 12 años, 2 meses
Puntos: 7
Respuesta: Actualización muy lenta MySQL JPA

Que query lanzaste en HeidiSQL?

¿Esta?

Código Java:
Ver original
  1. SELECT t0.IDRegistro, t0.IDEstado, t0.NLineasFijo, t0.NLineasMovil, t1.cif, t1.codigoPostal, t1.comentarios, t1.concertador, t1.direccion, t1.email, t1.gerente, t1.id, t1.lineasFijo, t1.lineasMovil, t1.localidad, t1.nombreRazonSocial, t1.numeroCuenta, t1.operadorFijo, t1.operadorMovil, t1.permanenciaFijo, t1.permanenciaMovil, t1.personaContacto, t1.provincia, t1.segmento, t1.telefono, t1.telefonoContacto, t1.telefonos, t0.comentarios, t0.concertador, t0.fechaCreacion, t0.fechaModificacion, t0.nombreEstado, t0.operadorFijo, t0.operadorMovil, t0.origen, t0.permanenciaFijo, t0.permanenciaMovil FROM registros t0 LEFT OUTER JOIN Cliente t1 ON t0.DNICLiente = t1.cif WHERE (NOT (t0.IDEstado = ?) AND t0.IDEstado IS NOT NULL)

o esta

Código Java:
Ver original
  1. SELECT pro FROM Registro pro WHERE pro.IDEstado NOT IN (20)

Te lo comento porque son distinstas querys, en la primera, por cada registro te estás trayendo su cliente, en las relaciones OneToOne, por defecto el FetchType es EAGER, y JPA irá a buscar cada cliente por cada registro que tengas en BBDD.

Si estas ejecutando la segunda query, solo estás recuperando los registros.

Independientemente de esto, y recapitulando, en vez de hacer un merge, que te va a realizar la SELECT + UPDATE, puedes utilizar NamedQuery, las namedQuery se suelen definir en los Entity, creas una namedQuery que haga la UPDATE directamente, te saltas la SELECT y a correr jeje.

Lo he escrito a pelo, sin IDE, puede escaparseme algun caracter.

Código Java:
Ver original
  1. Query query = em.createNamedQuery("nombreNamedQuery");
  2. query.setParameter("miParametro", miValor);
  3.  
  4. quer.executeUpdate();


Saludos.