Código MySQL:
Ver original
| |||
Problemas al ejecutar query Hola a todos de nuevo por aqui, intento ejecutar este query pero tarda mucho en ejecutar la consulta, alguien me podria decir si esta sentencia se puede acortar mas?
Código MySQL:
Ver original |
| |||
Respuesta: Problemas al ejecutar query Hola, Sin las tablas, sin poder probar y sin saber cual es el contexto y el objetivo de la consulta es difícil indicar una mejor consulta, pero estos son mis comentarios y sugerencias: las dos primeras subconsultas creo que se hacen a las mismas tablas, solo cambia la cláusula WHERE, así en una tienes: WHERE (d.active = 1) AND (t.active = 1) y en la segunda WHERE (t.active = 0) Creo que puedes hacer las dos consultas juntándolas en una sola, con algo como: WHERE ( (d.active = 1) AND (t.active = 1) ) or (t.active = 0) Que me parece que sería equivalente a WHERE d.active <> 1 or t.active <> 1 Otra sugerencia, por lo que veo al final quieres el la fecha mayor por persona, de todas las consultas, no creo que tenga caso que saques el mayor de cada subconsulta y luego la fecha mayor de todas, pensaría que el motor de búsqueda trabaja de más. Yo quitaría todas las funciones MAX y agrupaciones, simplemente consultaría todo, lo uniría con JOINs y en la consulta principal ejecutaría la agruapción: Así la consulta creo que podría quedar como sigue: Código HTML: SELECT idPerson, MAX(updatedDate) AS updatedDate FROM ( SELECT t.idPerson, d.updatedDate FROM transacciones AS t INNER JOIN detalle_de_las_transacciones AS d ON d.idTransaction = t.idTransaction WHERE d.active <> 0 or t.active <> 1 UNION SELECT t.idPerson, d.updatedDate FROM transacciones AS t INNER JOIN detalle_de_las_transacciones AS d ON d.idTransaction = t.idTransaction UNION SELECT tl.idPerson, tl.createdDate AS updatedDate FROM todos_los_leads AS tl UNION SELECT n.idCreatorObject, n.noteDate AS updatedDate FROM NOTE_notes AS n WHERE (idCreatorObjectType = 6) UNION SELECT tl.idPerson, tl.infoLastUpdated AS updatedDate FROM todos_los_leads AS tl UNION SELECT tl.idPerson, tl.lastAssignment AS updatedDate FROM todos_los_leads AS tl ) AS dates GROUP BY idPerson Creo que puede haber otras cosas que se pueden hacer, como implementar índices, el orden de las consultas etc, pero sin más información estaría adivinando. Espero que mejore el desempeño de la consulta. |
Etiquetas: |