1

多くのアクションを持つテーブルがあり、アクションの日時でフィールドが「作成」されます。HOUR、WEEK DAY、DAY、MONTH ごとに、期間範囲で登録したアクションの数を含む配列を取得する必要があります。

一意の db リクエストを実行し、すべての結果を解析することをお勧めします

    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)]++;
    }

またはcount()関数を使用した5つのクエリ?ありがとう

4

2 に答える 2

2

データベースは、まさにこの種のタスクを最高の効率で実行するように装備されています。ほとんどのデータ処理をデータベース システムにオフロードする必要があります。これにより、あらゆる種類の最適化が行われ、PHP は管理と表示のために残されます。原則として、プレゼンテーションを行う場合を除き、処理を行うために PHP でデータをループすることは避けるべきです。

したがって、すべてを 1 つのクエリで実行し、データベースから最終結果を取得する必要があります。クエリを見て、必要なものをすべて組み合わせてみてください。適切なクエリが思いつかない場合は、Stack Overflow からヘルプを取得してみてください (ただし、別の質問を開いてください)。

于 2013-01-25T13:44:15.527 に答える
0

一意のデータベース リクエストとすべての結果の解析。ネットワークのオーバーヘッドが少なくなります。

于 2013-01-25T13:40:57.110 に答える