2015-08-03 45 views
0

在一個查詢中具有多個MySQL Count實例或爲每個計數實例分別查詢是否更快?如果是這樣,我將如何結合這兩個查詢?具有多個計數的MySQL性能

$msd_call_qry = "SELECT count(event) AS MissedCalls FROM queuelogdb.queue_log WHERE (agent = '$agent_name[0]' OR agent = '$agent_name[1]')" 
       . " AND (event = 'ABANDON' OR event = 'RINGNOANSWER') AND queuename IN ('500','505') AND time BETWEEN '$lastDay' AND '$today'"; 

$ttl_call_qry = "SELECT count(event) AS TotalCalls from queuelogdb.queue_log WHERE (agent = '$agent_name[0]' OR agent = '$agent_name[1]') " 
       . "AND event = 'CONNECT' AND queuename IN ('500','505') AND time BETWEEN '$lastDay' AND '$today'"; 
+0

你應該使用在'event' columnd用組一個查詢,如果需要在PHP後來總結一下。但這很大程度上取決於數據的外觀以及您想要完成的內容。 –

回答

2

你的表是一樣的。 WHERE條款中的大部分條件都是相同的。所以,你應該能夠使用條件彙總:

SELECT SUM(event = 'ABANDON' OR event = 'RINGNOANSWER') AS MissedCalls, 
     SUM(event = 'CONNECT') AS TotalCalls 
FROM queuelogdb.queue_log 
WHERE agent IN ('$agent_name[0]', '$agent_name[1]') AND 
     queuename IN ('500', '505') AND 
     time BETWEEN '$lastDay' AND '$today'". "; 
+0

感謝這正是我需要的。 – b0w3rb0w3r