인기검색어 쿼리질문입니다.
본문
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개 까지만 조회하라는 내용입니다.
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 생성