>  기사  >  백엔드 개발  >  mysql - php, 수집된 댓글 수에 따라 기사를 정렬하는 가장 빠른 방법은 무엇입니까?

mysql - php, 수집된 댓글 수에 따라 기사를 정렬하는 가장 빠른 방법은 무엇입니까?

WBOY
WBOY원래의
2016-08-20 09:04:01926검색

현재 모든 데이터를 꺼내서 정리하고 있어 속도가 매우 느립니다. 이제 페이징이 필요합니다.

댓글 총 개수를 합산하는 분야를 고려하지 않고 더 좋은 방법이 없을까요? 기본 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으로 문의하세요.