Nuevamente recurriendo a su ayuda.
Tengo este codigo, que recoge datos de 6 tablas distintas que están en 3 bases, ubicadas en un mismo host. La consulta la tengo dentro de un SP para entregar solo el "Call" a la aplicación cliente.
Bien la consulta en sí se ejecuta bien (levanta los datos) pero demora 35 segundos en hacerlo.
MI pregunta es como podría mejorar este tiempo
Desde ya gracias
Código:
DELIMITER $$ DROP PROCEDURE IF EXISTS `rrserver`.`Informe Agentes`$$ CREATE DEFINER=`root`@`%` PROCEDURE `Informe Agentes`(inicio datetime, fin datetime, estado varchar(15), empleador varchar(20), cargo varchar(15)) BEGIN Select u.nombreapellido NOMBRE, u.portalid USERPORTAL, m.tipo_turno `TIPO TURNO`, IFNULL(( SELECT COUNT(c.numero_consulta) FROM portalreflex.consultas c WHERE c.usuario_ingreso = u.portalid AND c.fecha_ingreso between inicio AND fin GROUP BY c.usuario_ingreso ),0) `CONSULTAS`, /* Ejecuta una sub consulta a la tabla consultas*/ IFNULL(( SELECT count(b.usuario_ingreso) FROM portalreflex.boletas b WHERE b.usuario_ingreso = u.portalid AND b.fecha_ingreso between inicio AND fin GROUP BY b.usuario_ingreso ),0) `BOLETAS`, IFNULL(( SELECT COUNT(r.numero_requerimiento) FROM portalreflex.requerimientos r WHERE r.usuario_ingreso = u.portalid AND r.fecha_ingreso between inicio AND fin GROUP BY r.usuario_ingreso ),0) `REQUERIMIENTOS`, IFNULL(( SELECT SUM(t.recibido) FROM rrserver.agente_15minutos t WHERE t.userid = u.userid AND t.fecha between inicio AND fin GROUP BY t.userid ),0) LLAMADAS FROM rrserver.usuarios u INNER JOIN monitoreo.agentes m ON u.userid = m.userid WHERE m.estado LIKE estado AND m.empleador_agente LIKE empleador AND m.cargo LIKE cargo GROUP BY u.userid ORDER BY u.nombreapellido asc; END$$ DELIMITER ;
PD: una pregunta al margen, como lo hacen para etiquetar codigos sql en el foro ???