分步,然后排序,然后回声的一步方法?

时间:2012-12-19 20:25:13

标签: php arrays sorting

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. 然后对这些组进行排序?

  4. 或者我应该事先排序?

    是在MySql级别更快地完成吗?效率更高?

    编辑:我找到的最佳方法: Basic PHP MySQL array grouping question

1 个答案:

答案 0 :(得分:0)

在您的数据集不是太大的某个时刻,如果正确添加索引,则使用mysql进行排序应该更快,因为default mysql索引是b-tree。在你的情况下,带上数据并循环遍历它你将得到一个O(n),因此随着数据变大,排序将花费更多。

我建议您查看数据库架构,使用explain查看在运行的查询和基准测试中如何使用索引。再次:这将取决于您的数据。

现在,为了梦想:一旦你的数据大到足以使mysql中的排序太慢,那么你应该切换一些你可以使用map-reduce或类似的东西并行排序的东西,但是给出了你认为你现在安全的帖子的性质。