我想讓我的報告更快,因爲需要很長時間才能加載,我想知道是否有一種方法可以從一個選擇中進行多次計數。MYSQL:從一個選擇中進行多次計數
實例,使這個選擇的願望是不會改變的計數
SELECT IDS, Fecha_Recarga, Banco_Recarga, Tipo, Status, RefVerif, MontoVerif, RecargaDuplicada FROM transaccionesrr WHERE Fecha_Recarga = '2017-02-07' AND Banco_Recarga = 'BANESCO' AND Tipo = 'RECARGA' AND Status = 'PROCESADA'
在此基礎上選擇的結果,我想打多計數像
Count (*) WHERE RefVerif = '1' AS RefVerif
Count (*) WHERE RefVerif = '1' AND MontoVerif = '0' AS MontoVerif
Count (*) WHERE RecargaDuplicada = '1' AS Duplicada
這是存儲過程,我有權知道
SELECT COUNT(*) AS RECARGAS,
(SELECT COUNT(*) FROM transaccionesrr WHERE Tipo = 'RECARGA' AND Status = 'PROCESADA' AND Fecha_Recarga BETWEEN PRM_Fecha_Desde AND PRM_Fecha_Hasta AND Banco_Recarga = PRM_Banco AND RefVerif = '1') AS VERIFICADAS,
(SELECT COUNT(*) FROM transaccionesrr WHERE Tipo = 'RECARGA' AND Status = 'PROCESADA' AND Fecha_Recarga BETWEEN PRM_Fecha_Desde AND PRM_Fecha_Hasta AND Banco_Recarga = PRM_Banco AND RefVerif = '0') AS NOVERIFICADAS,
(SELECT COUNT(*) FROM transaccionesrr WHERE Tipo = 'RECARGA' AND Status = 'PROCESADA' AND Fecha_Recarga BETWEEN PRM_Fecha_Desde AND PRM_Fecha_Hasta AND Banco_Recarga = PRM_Banco AND RefVerif = '1' AND MontoVerif = '0') AS MONTOVERIF,
(SELECT COUNT(*) FROM transaccionesrr WHERE Tipo = 'RECARGA' AND Status = 'PROCESADA' AND Fecha_Recarga BETWEEN PRM_Fecha_Desde AND PRM_Fecha_Hasta AND Banco_Recarga = PRM_Banco AND RecargaDuplicada = '1') AS DUPLICADAS
FROM transaccionesrr WHERE Tipo = 'RECARGA' AND Status = 'PROCESADA' AND Fecha_Recarga BETWEEN PRM_Fecha_Desde AND PRM_Fecha_Hasta AND Banco_Recarga = PRM_Banco ;
我試圖做到這一點,因爲我認爲如果你認爲有更好的方式我會很感激,它會更快。
我一直在努力使天的解決方案,但我沒有找到任何
我不知道很多有關SQL這一點,但我想查詢會如果你將'RefVerif'存儲爲int而不是字符,那麼速度會更快嗎?所以你應該使用'RefVerif = 1'而不是使用單引號。 –
我會嘗試這個,謝謝 –