2012-12-19 40 views
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

+0

這可以完全用sql查詢 –

回答

0

在某個點數據集不是太大,MySQL的排序應該是更快,如果索引正確添加,因爲default MySQL的索引是B-樹。在你的情況下,帶來數據並循環播放它,你將有一個O(n),因此數據越大,排序將花費更多。

我建議你看看你的數據庫模式,使用explain來查看你正在運行的查詢和基準測試中如何使用索引。再次:這將取決於您的數據。

現在,爲了做夢:一旦你的數據足夠大,使MySQL的排序太慢,那麼你應該切換一些東西,你可以使用map-reduce或類似的東西並行排序,但給定你的帖子的性質我認爲你現在是安全的。

+0

哇。這是我的頭..我必須閱讀一本關於MySql的書來理解這個答案! – obmon

+0

讓我放輕鬆吧:在表格中添加索引並使用mysql排序 –

+0

好的..我會對索引和排序做一點研究..謝謝。 – obmon