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

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

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 생성 

 

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

회원로그인

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