2015-08-03 3 views
0

Быстро ли иметь несколько экземпляров MySQL Count в одном запросе или отдельных запросах для каждого экземпляра счетчика? И если да, то как бы объединить эти два запроса?Производительность MySQL с несколькими Counts

$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'dd и суммировать его позже в 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

Смежные вопросы