Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Se alguem puder me ajudar, estou querendo otimizar esta query,
em média cadas count que ela está fazendo retorna uns 3000 registros, é um relatório quebrado em data, cada linha demora em média 2,5300 segundos o que acho que é ruim! quem puder ajudar posta ai vlw.
segue a query abaixo!
SELECT
DISTINCT(C.uniqueid),
@data :=DATE(C.calldate) AS varData,
@grupo:= L.nOperacao As grupo,
DATE(C.calldate) AS data,
COUNT(C.src) AS atendidas,
CONVERT(SEC_TO_TIME(AVG(C.billsec)), CHAR) AS duracao,
/**
* Primeira subquery 'não atendidas'
*/
(SELECT
COUNT(C.src)
FROM
asterisk_hermes.cdr C,
asterisk_hermes.Logins L,
asterisk_hermes.departamento D
WHERE
calldate BETWEEN CONCAT(@data,' 00:00:00') AND CONCAT(@data,' 23:59:59')
AND LENGTH(src)<=5
AND LEFT(dst, 1) NOT IN ('*', 's')
AND C.src = L.nLogin
AND D.idDepartamento = @grupo
AND L.nOperacao = D.idDepartamento
AND C.disposition = 'NO ANSWER'
GROUP BY DATE(C.calldate)
ORDER BY C.src, C.calldate) AS naoAtendidas,
/**
* segunda subquery 'ocupadas'
*/
(SELECT
COUNT(C.src)
FROM
asterisk_hermes.cdr C,
asterisk_hermes.Logins L,
asterisk_hermes.departamento D
WHERE
calldate BETWEEN CONCAT(@data,' 00:00:00') AND CONCAT(@data,' 23:59:59')
AND LENGTH(src)<=5
AND LEFT(dst, 1) NOT IN ('*', 's')
AND C.src = L.nLogin
AND D.idDepartamento = @grupo
AND L.nOperacao = D.idDepartamento
AND C.disposition = 'BUSY'
GROUP BY DATE(C.calldate)
ORDER BY C.src, C.calldate) AS ocupadas,
D.sDescDepto
/**
* condições principais
*/
FROM
asterisk_hermes.cdr C,
asterisk_hermes.Logins L,
asterisk_hermes.departamento D
WHERE
calldate BETWEEN '2008-10-10 00:00:00' AND '2008-10-10 23:59:59'
AND LENGTH(src)<=5
AND LEFT(dst, 1) NOT IN ('*', 's')
AND C.src = L.nLogin
AND D.idDepartamento = 4006
AND L.nOperacao = D.idDepartamento
AND C.disposition = 'ANSWERED'
GROUP BY DATE(C.calldate)
ORDER BY C.calldate
Carregando comentários...