sun's longitude:241 33 12.54 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
1792 번 글의 답장글: Re: Re: mysql 에서 랭킹순위를 바로 업데이터하는방법??
글쓴이: 고재두 [홈페이지] 글쓴날: 2003년 11월 27일 18:28:30 목(저녁) 조회: 722

[산이]님이 남기신 글:

>
>[고재두]님이 남기신 글:
>
>>안녕하세요. 또왔어요... ㅡㅡ.
>>mysql 데이터 처리에 궁금한 사항이 있어 문의
드립니다.
>>점수를 기준으로 한 랭킹 DB 를 만들려고 합니다..
>>특정 사용자의 랭킹이 몇인지를 항상 업데이터 해야 하는
부분에서 
>>구조적인 기술이 필요하여 문의 드립니다..
>>
>>일단 TEST 라는 샘플 테이블구조는...

>>-------------------------------------
>>NUM |	NAME	|	POINT	|	RANK
>>-------------------------------------
>>1	|	테스트1	|	10		|	5
>>2	|	테스트2	|	20		|	4
>>3	|	테스트3	|	50		|	3
>>4	|	테스트4	|	70		|	2
>>5	|	테스트5	|	90		|	1
>>-------------------------------------
>>테이블 구조가 위와 같다면...
>>
>>출력시 테스트2 라는 사용자의 랭킹은 4입니다만..
>>이때는 간단히 (select rank from test where name='테스트2') 로 확인
할수 있겠죠?
>>그런데....
>>테스트3 유저의 포인트 점수가 50에서 60 또는 70 으로 업데이트
되었을 경우..
>>랭킹이 바뀌어야 하는데.. 
>>이것을 포인트가 바뀌는 즉시 바로 수정된 랭킹을 볼수 있는
방법이 없을까요?
>>
>>제가 생각하기에는 전체적인 랭킹을 갱신을 한다음에 셀렉트
하는방법 밖에 모르겠네요 ㅡㅡ.
>>그렇게 되면 사용자가 만명 이상 넘어가면 갱신하는데만도
 속도가 엄청 느려서리 ㅡㅡ.
>>
>>랭킹 테이블을 따로 떼어서 처리 한다던가 하는 좋은 방법이
없을까요? 
>
>========================================
>
>랭킹은 실시간 업데이트 랭킹과 일정 기간을 두고 한번만
업데이트하는
>랭킹이 있습니다.
>
>위의 질문은 전자의 경우이네요.
>
>이와 같은 경우는 게시판의 정렬 인덱스를 업데이트하는
것과
>거의 동일한 알고리즘입니다.

>
>>테스트3 유저의 포인트 점수가 50에서 60 또는 70 으로 업데이트
되었을 경우..
>
>만약 50 -> 60 포인트로 올라간다고 하면,
>
>0. '현재나의랭킹'을
 구합니다.
>
>1. 포인트가 60 보다 큰 유저의 랭킹중에서 가장 작은 랭킹 값을
구합니다.
>
>SELECT 결과랭킹 FROM 테이블 WHERE 포인트 > 60 ORBER BY 랭킹 ASC LIMIT
1;
>
>위의 경우라면 가져온 랭킹 결과가 2 가 되겠죠
>포인트가 바꾸었으므로 '테스트3' 의 랭킹은 `결과랭킹 + 1' 이
되겠죠.
>(결과가 NULL 이라도 정수형으로 바꾸어 주는 트릭도
필요합니다.)
>
>바뀐 나의 랭킹 2 + 1 => 3 (`새로운랭킹')
>
>
>2. 현재 나의 랭킹과 다른 사람의 랭킹을 업데이트
합니다.
>
>if(현재나의랭킹
 != 새로운랭킹) // 랭킹이 바뀌는 경우
>{
>  ## 다른사람 랭킹 업데이트
>  ##
>  UPDATE 테이블 SET 랭킹 = 랭킹 + 1
>      WHERE 랭킹 > '결과랭킹' AND 랭킹 < '현재나의랭킹';

>
>  ## 나의 랭킹 업데이트
>  ##
>  UPDATE 테이블 SET 랭킹 = 새로운랭킹 WHERE NAME =
'테스트3';
>}
>
>
>3. 끝
>
>회원수가 많아지면 어쩔 수없이 느려집니다. 

========================================

아~~~~~~~!
그런데.. 이걸로는 플그래밍 짜니 엄청 복잡해지는데..
 ㅡㅡ.
특히 포인터가 줄었을때(-)는 ??... ㅡㅡ..
음..... 
더 쉬운 방법은 없는걸가요... 하~~~~

 
이전글 : Re: mysql 에서 랭킹순위를 바로 업데이터하는방법??
다음글 : Re: Re: Re: mysql 에서 랭킹순위를 바로 업데이터하는방법??  
 from 211.241.233.15
JS(Redhands)Board 0.4 +@

Re: mysql 에서 랭킹순위를 바로 업데이터하는방법?? Re: Re: Re: mysql 에서 랭킹순위를 바로 업데이터하는방법??
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2024. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds