Hola a todos
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 ???