¿Cómo puede optimizar este query?
Código MySQL:
Ver original
| |||
Optimizar un query Última edición por gnzsoloyo; 02/01/2015 a las 17:46 |
| ||||
Respuesta: Optimizar un query Cita: Hay varios consejos:
Iniciado por anayazti 1) No uses CASE dentro del SELECT salvo que sea total y absolutamente necesario e imposible de obtener los datos de otro modo. Es ineficiente hasta la locura. 2) No uses subconsultas en el SELECT, salvo que sea totalmente imprescindibles. Son asesinas de performance porque se ejecutan una vez por cada registro devuelto en la consulta principal... y si esta devuelve demasiados registros se transforma en un desastre. 3) No uses comillas para las cadenas de texto. No todos los servidores los aceptan porque por default se toman como si fuesen acentos agudos, y darían errores impredecibles de sintaxis y ejecución. Las cadenas de texto van entre apostrofos ('). Esto por lo pronto. Yo empezaría por tratar de resolver la condición que fuerzas como con fórceps, con una tabla derivada en el FROM. Algo como:
Código SQL:
Ver original
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) Última edición por gnzsoloyo; 02/01/2015 a las 19:36 |
| ||||
Respuesta: Optimizar un query has esto en tu consulta SELECT SQL_big_RESULT c.interno, c.mercado, p.total, IFNULL(mov.final, p.total) tt FROM paciente p INNER JOIN calificacion c ON p.interno = c.interno LEFT JOIN (SELECT fechai, interno, MAX(final) final FROM movimientos WHERE interno = p.interno AND fechai = '2014-12-11' GROUP BY fechai , interno) mov ON mov.interno = p.interno WHERE p.fecha = '2014-12-11' AND mov.fechai = p.fecha OR mov.interno IS NULL;
__________________ Pero si alguno de vosotros se ve falto de sabiduría, que la pida a Dios, el cual da a todos abundantemente y sin reproche, y le será dada. Pero que pida con fe, sin dudar Santiago 1.5-6 |
Etiquetas: |