2013-01-25 15 views
1

我有一個表有很多動作,一個字段是「創建」與動作的日期時間。 我需要返回一個數組,每次HOUR,WEEK DAY,DAY,MONTH在periode範圍內註冊了多少個動作。更好的解析和數組或許多查詢到Mysql?

是更好的做一個獨特的數據庫請求,並分析所有結果

foreach($scans as $s) { 
     $data['total']++; 
     $t = strtotime($s['Scan']['created']); 
     //week day 
     @$data['weekday'][date('w',$t)]++; 
     @$data['hour'][date('H',$t)]++; 
     @$data['day'][date('d',$t)]++; 
     @$data['month'][date('n',$t)]++; 
    } 

或5查詢與count()函數? 謝謝

+2

呃,錯誤抑制器。 – Mahn

回答

2

數據庫能夠以最佳效率完成這類任務。您應該將大部分數據處理工作卸載到數據庫系統,這將爲您做各種優化,並將PHP用於管理和演示。原則上你應該避免循環PHP中的數據來處理,除非你正在做演示文稿。

因此,您應該在ONE查詢中完成所有事情,並從數據庫中獲取最終結果。看看你的查詢,並嘗試將你想要的所有東西結合起來。也許你可以嘗試從堆棧溢出獲得幫助,如果你不能拿出正確的查詢(但打開另一個問題)。

+0

我認爲在時間上可能最多10000行 – Igor

+0

因此,您需要想出一個查詢來一步完成所有工作。 10.000行是一個可以減慢腳本速度的數字。 – Palantir

+0

對不起,如何在ONE查詢中完成所有操作? – Igor

0

一個唯一的數據庫請求和解析所有結果。將會有更少的網絡開銷。