Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel de Andrade

Alguem tem alguma dica para melhorar esta query

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.