0

MysqlまたはPHP経由?

記事を日付でグループ化する必要があるデザインがあります。日付は見出しになり、最新の10件のすべての記事が各見出しの下にグループ化されます。日付は何でもかまいません、および/または非常に散発的である可能性があり、記事は降順である必要があります。

私は私がしなければならないと思います

  1. 最後の10個の記事を取得し、次のように多次元配列に配置します。

    $allretrieved = array ( array ( id => a, date => b, title => c, body => d, image => e, etc.),
                            array ( id => a, date => b, title => c, body => d, image => e, etc.),
                            etc.
                    );
    
  2. 次に、私が完全には理解していない方法を使用して配列をグループ化します(別の配列に抽出しますか?誰かがこの関数を私に説明しますか?)

    $date_groups[] = array();
    $group = '';
    
    foreach( $date_groups as $key=>$val ) {
        if($key == 'date'){
             $group = $val;
        }
    $comment_groups[$group][] = $val;
    }
    
  3. 次に、グループを並べ替えますか?

または、事前に並べ替える必要がありますか?

MySqlレベルでそれをより速くやっていますか?もっと効率的?

編集:私がこれのために見つけた最良の方法: 基本的なPHPMySQL配列のグループ化の質問

4

1 に答える 1

0

データセットが大きすぎないある時点で、defaultmysqlインデックスはbツリーであるため、インデックスが正しく追加されていれば、mysqlでの並べ替えが高速になるはずです。あなたの場合、データを持ってきてそれをループすることでO(n)、データが大きくなるにつれて並べ替えにかかる時間が長くなります。

explainデータベーススキーマを調べて、実行中のクエリとベンチマークでインデックスがどのように使用されているかを確認することをお勧めします。もう一度:これはあなたのデータに依存します。

今、夢を見るために:mysqlでの並べ替えが遅くなりすぎるほどデータが大きくなったら、map-reduceなどを使用して並行して並べ替えることができるものに切り替える必要がありますが、投稿の性質を考慮して今のところ安全だと思います。

于 2012-12-19T20:33:39.590 に答える