首頁 >後端開發 >php教程 >mysql - php,依照文章統計到的評論條數排序,怎麼樣的方式最快?

mysql - php,依照文章統計到的評論條數排序,怎麼樣的方式最快?

WBOY
WBOY原創
2016-08-20 09:04:01942瀏覽

目前是把所有資料取出來,再排序,速度很慢。而且現在要求做分頁。

在不考慮加上評論總數這個欄位的情況下,有沒有更優的方法?原生的sql語句可以直接完成嗎?

回覆內容:

目前是把所有資料取出來,再排序,速度很慢。而且現在要求做分頁。

在不考慮加上評論總數這個欄位的情況下,有沒有更優的方法?原生的sql語句可以直接完成嗎?

<code>SELECT 
    posts.id, 
    posts.content, 
    comments.id AS comment_id,
    comments.body,
    count(comments.id)
FROM posts
LEFT JOIN comments --左连接,保证左表posts中没有评论的文章也显示出来
ON posts.id = comments.post_id 
GROUP BY posts.id --分组,配合count(comments.id)统计到每篇文章的评论数
ORDER BY count(comments.id) DESC, posts.id DESC --按评论数排序,相同则按文章ID排序
LIMIT 2 OFFSET (3-1)*2 --分页,2表示每页显示的文章数量,3表示第3页</code>

mysql - php,依照文章統計到的評論條數排序,怎麼樣的方式最快?

  1. 在文章表裡面加個字段叫評論數,然後每次有這篇文章新的評論就同時把它加1,然後根據這個字段排序即可

  2. 如果只拿文章ID的排序,可以在評論表裡面這樣做:

<code>select post_id from comment group by post_id order by count(1) desc limit 0, 10;</code>

其中post_id是文章ID,comment是評論表,這個語句拿到評論數最多的前10篇文章ID

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn