1

我有一个包含许多操作的表,一个字段是使用操作的日期时间“创建”的。我需要返回一个数组,其中包含我在周期范围内每小时、每周、每天、每月注册的操作数。

最好做一个独特的数据库请求并解析所有结果

    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() 函数的查询?谢谢

4

2 回答 2

2

数据库能够以最佳效率准确执行此类任务。您应该将大部分数据处理卸载到数据库系统,它会为您进行各种优化,并让 PHP 进行管理和演示。原则上,您应该避免在 PHP 中循环数据来进行处理,除非您正在做演示文稿。

因此,您应该在一个查询中完成您的全部工作,并从您的数据库中获取最终结果。查看您的查询并尝试将您想要的所有内容组合到其中。如果您无法提出正确的查询,也许您可​​以尝试从 Stack Overflow 获得帮助(但要为它打开另一个问题)。

于 2013-01-25T13:44:15.527 回答
0

一个唯一的数据库请求并解析所有结果。网络开销会更少。

于 2013-01-25T13:40:57.110 回答