인기검색어 쿼리질문입니다.

인기검색어 쿼리질문입니다.

QA

인기검색어 쿼리질문입니다.

본문


SELECT pp_word, COUNT(*) AS cnt FROM g5_popular WHERE pp_date BETWEEN '20161213' AND '20161220' GROUP BY pp_word ORDER BY cnt DESC, pp_word LIMIT 0, 7 

 

위의 쿼리는

lib.popular.php 에 있는 기존 쿼리인데요

이걸 실행하면 결과값이

 

pp_word 랑 cnt 두개 나오는데

pp_word 는 검색어 이고

cnt 는 몇번 검색되었는지 나타내는 임시 칼럼 아닌가요?

 

제가 이해한게 맞다면..

몇번을 검색해도 cnt 값이 안바뀌네요 ㅠㅠ

 

인기검색어 스킨을 네이버처럼 만들고 싶어서

이것저것 알아보고 있는데

역시나 쉬운건 하나도 없군요 ㅋㅋ

 

이 질문에 댓글 쓰기 :

답변 3

>pp_word 는 검색어 이고

>cnt 는 몇번 검색되었는지 나타내는 임시 칼럼 아닌가요?

pp_word에 해당하는 단어가 위의 조건일자(BETWEEN '20161213' AND '20161220')에 몇번 검색되었는지를 카운트 하는 것입니다.

 

>제가 이해한게 맞다면..

>몇번을 검색해도 cnt 값이 안바뀌네요 ㅠㅠ

같은날 같은 IP로 같은 단어를 두번등록하지 못하도록 되어있습니다.

값이 바뀌는 것은 다음날 확인하시던가, 아니면 pp_ip 또는 pp_date를 달리하여 등록하셔어 조회카운트가 올라갑니다. 

 

그리고 ORDER BY cnt DESC, pp_word LIMIT 0, 7 는 검색이 많이된 검색어를 기준으로 7개 까지만 조회하라는 내용입니다.

같은날 같은 IP로 같은 단어를 두번등록하지 못하도록 되어있습니다.

이 조건 때문이였군요... ㅜ_ㅜ
혹시 이 조건을 없애려면 어떻게 해야하는지 여쭤봐도 될까요?

LIMIT 0,7 없애보세요.

검색어가 일치하지 않아서 낮은 검색어는 안보이는듯요..

 


SELECT pp_word, COUNT(*) AS cnt FROM g5_popular WHERE pp_date BETWEEN '20161213' AND '20161220' GROUP BY pp_word ORDER BY cnt DESC, pp_word 


 

>혹시 이 조건을 없애려면 어떻게 해야하는지 여쭤봐도 될까요?  

popular 테이블에 다음 처럼 unique index가 설정되있습니다.

UNIQUE INDEX `index1` (`pp_date`, `pp_word`, `pp_ip`)

 

이 unique  index를 제거하신후

unique를 뺀 인덱스를 다음처럼 만들어 주시면 됩니다. 

INDEX `index1` (`pp_date`, `pp_word`, `pp_ip`)

 

인덱스는 꼭 만들어 주셔야합니다.

만들지 않으면 데이타가 많아 질수록 속도가 느려집니다.

 

인덱스 제거와 생성방법은 검색사이트에서 조회하시면 많이 보실수있습니다.

mysql index 제거

mysql index 생성 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 48
QA 내용 검색

회원로그인

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