중복되는 값을 많은 순으로 뽑아오는 쿼리문 좀 알려주세요. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

중복되는 값을 많은 순으로 뽑아오는 쿼리문 좀 알려주세요. 정보

중복되는 값을 많은 순으로 뽑아오는 쿼리문 좀 알려주세요.

본문

예를 들어서..

- A게시판에 a카테로리에 해당하는 글을 많이 등록한 10명을 뽑아서, 순서대로 레벨과 닉넴을 보여준다.

라고 할때..
뭔가 좋은 방법이 없을까요?
(게시물은 1만건이상, 회원은 10만건을 기준. - 뭐 그렇다고 치고....... ^^;;)

1. 싹다 끌어와서 array_unique로 복사해서, 루프돌려서 세어보고, 10명의 회원정보를 빼온다.
2. union all 로 일단 같이 끌어오고, 갯수를 세어본다.
이 두가지 밖에 생각이 안납니다. 돌려보니.. 부하가 심하더군요.

처리면에서, 비용이 가장 적게드는 놈으로 알려주시면, 너무나도 감사x2 하겠습니다.
살려주십쇼!

댓글 전체

추가 DB를 구성하지 않는 한 아래의 방법밖에 없습니다.
부하가 심하니 DB-cache 를 이용하세요. 10분에 한번이나 1시간에 한번 실행되는게 좋습니다.

SELECT a.`mb_id` , count(a.`mb_id`) as `cnt` , b.`mb_name` , b.`mb_level`
FROM  `g4_write_free` a
INNER JOIN  `g4_member` b ON a.`mb_id` = b.`mb_id`
WHERE a.`ca_name` =  '잡담'
GROUP BY a.`mb_id` , b.`mb_name` , b.`mb_level`
ORDER BY `cnt` DESC
LIMIT 0 , 10
속도를 유지하면서 원하는 결과를 뽑는 방법은 3가지 정도
1. select userid, category, count(userid) from A게시판
group by category, userid
having count(userid) > 10 --적어도 2번이상 글쓴사람
(쿼리는 생각난대로 쓴거라서 정상동작하지 않을것입니다. 대략 이련형태)
 - count 별로 소팅하여 위에서 10개 출력
 - category 테이블에 index 추가
 - userid,category를 묶어서index 추가(순서는 반대일지도 모름)

2.  g4_board_new 테이블에서 category 필드를 추가한다음
  -    신규글이 등록되었을때 category 도 update되도록 그누보드수정
  -  위와 비슷한 형태로 query

3. 중간 테이블을 별도로 생성하여 한번씩 delete all, insert 를 해줌
 - 1번이나 2번을 통하여 개인별,게시판별, 카테고리별 개수를 하루에 한번정도 update
 
속도에 민감하다면, 3번 추천
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT