Mysql还是通过PHP?
我有一个设计,要求按日期分组文章。日期将是标题,最新10的所有文章将分组在每个标题下。日期可以是任何和/或高度零星的,文章必须按降序排列等等。
我想我必须
检索最后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.
);
然后使用我不完全理解的方法对数组进行分组(提取到另一个数组?有人会向我解释这个函数吗?)
$date_groups[] = array();
$group = '';
foreach( $date_groups as $key=>$val ) {
if($key == 'date'){
$group = $val;
}
$comment_groups[$group][] = $val;
}
然后对这些组进行排序?
或者我应该事先排序?
是在MySql级别更快地完成吗?效率更高?
编辑:我找到的最佳方法: Basic PHP MySQL array grouping question答案 0 :(得分:0)
在您的数据集不是太大的某个时刻,如果正确添加索引,则使用mysql进行排序应该更快,因为default
mysql索引是b-tree。在你的情况下,带上数据并循环遍历它你将得到一个O(n)
,因此随着数据变大,排序将花费更多。
我建议您查看数据库架构,使用explain
查看在运行的查询和基准测试中如何使用索引。再次:这将取决于您的数据。
现在,为了梦想:一旦你的数据大到足以使mysql中的排序太慢,那么你应该切换一些你可以使用map-reduce或类似的东西并行排序的东西,但是给出了你认为你现在安全的帖子的性质。