최상위 포인트 소지자 x명을 부하없이 구할 수 있을까요?
본문
안녕하세요
x 포인트 이상 및 최상위 포인트 소지자 x명에 포함될 경우 특정 레벨 아이콘을 부여하고 싶은데
혹시 최상위 포인트 소지자 x명을 부하없이 구하는 방법이 있을까요?
단순히
select * from g5_member order by mb_point desc limit x
이런 식으로 하면 레벨을 보여줄 때 마다 부하가 심할텐데..
그렇다고 해서 캐시를 해놓기 위한 테이블을 만든다면 또 실시간으로 변경이 되기 어려운 점이 있는데
좋은 방법이 있을까요..!
!-->답변 4
페이지 이동마다 이런 쿼리를 실행해야하고 모든 접속자가 실행해야 하니
회원이 계속 늘어나면 바람직하지않은 상황이 될테죠
이렇게 하면 어떨까요?
1. 10명이 필요하다면 20위 정도를 추출해서 config_table 여분필드 cf_1 에 아이디를 기록합니다
-- 이 작업은 하루에 한번만 하도록 구성
--config_table은 페이지 이동시마다 항상 읽어오도록 되어있으므로 따로 쿼리를 하지않아도 됨
2. 포인트 추가가 발생하면 이 회원이 위 20위 중에 해당하는지 판별해서 20위 내에 있는 회원이면
새로이 20명을 추출해서 cf_1을 갱신 합니다
3. $config[cf_1]의 값으로 필요한 처리
SELECT *
FROM `g5_member`
ORDER BY `g5_member`.`mb_point` DESC
LIMIT 0 , 3
회원수가 얼마나 되는지 몰라도 저정도면 부하가 심하진 않을 것 같은데요
저도 균이님 방법이 나을것 같습니다.
답변을 작성하시기 전에 로그인 해주세요.