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 级别上做得更快吗?更高效?

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

4

1 回答 1

0

在您的数据集不太大的某些时候,如果正确添加索引,则使用 mysql 排序应该更快,因为defaultmysql 索引是 b-tree。在您的情况下,将数据带入并对其进行循环,您将拥有一个O(n)因此随着数据变大,排序将花费更多时间。

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

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

于 2012-12-19T20:33:39.590 回答