안녕하세요^^
항상 많은 도움 받고 있습니다.
다른게 아니라 점수를 바탕으로 순위를 매겨서 보여줘야되는데요.(점수는 유저들에 의해서 실시간으로 바뀝니다.)
두가지 방법이 있을것 같은데요.
1. 실시간으로 보여주는 방식
2. 특정시간에 순위를 업데이트해서 보여주는 방식
당연히 점수가 반영되면 실시간으로 보여주는게 좋을것 같아서 이 방식으로 해보고 싶은데요.
점수테이블을 따로 하나 만들고 클러스터 인덱스가 정렬을 해주니까 클러스터 인덱스로 점수를 잡아주고
SELECT T.Ranking
FROM (SELECT RANK() OVER(ORDER BY Rating DESC) AS Ranking FROM dbo.Rank) AS T
이런식으로 쿼리를 작성하면 되는건지...
조건절은 순위 몇등부터 몇등까지 뽑아줘, 해당유저로 뽑아줘 이런 조건절이 들어갈 예정입니다.
다시 요약하면
1. 실시간으로 순위를 보여주고 싶은데 어떤 방식이 효율적일지??
2. 제가 적어 놓은 방식으로 해도 문제 되는게 없는건지?, 더 효율적인 방법은 없는건지..
많은 조언부탁드립니다.
감사합니다^^
Comment 2
-
김희진_285679
2013.06.04 17:23
-
찌짐
2013.06.04 17:49
비지니스적으로 실시간 데이터가 필요하지 않다면 1, 아니라면 2로.
하지만 윗분이 말씀하셨듯이 점수 갱신빈도가 굉장히 높다면 2로 좀더 기울 듯 합니다.
2의 경우라면 rank 점수를 관리하는 필드는 별도 테이블로 분리해서 갱신에 대한 부하를 감소-격리 시키는것도 하나의 방법일듯 합니다.
사용자가 많지 않다면 그냥 1번으로..
데이타가 많아서 좀 느리다? 그럼 2번으로..