database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30740 게시물 읽기
No. 30740
해당id의 랭킹을 출력하려고 하는데요
작성자
신정연(feelsagood)
작성일
2014-07-16 10:26ⓒ
2014-07-16 10:29ⓜ
조회수
9,556

 

int(11)     아니오 None AUTO_INCREMENT Browse distinct values 변경 삭제 기본 고유값 인덱스 Fulltext
varchar(255) utf8_unicode_ci   아니오 None   Browse distinct values 변경 삭제 기본 고유값 인덱스 Fulltext
varchar(50) utf8_unicode_ci   아니오 None   Browse distinct values 변경 삭제 기본 고유값 인덱스 Fulltext
varchar(255) utf8_unicode_ci   아니오 None   Browse distinct values 변경 삭제 기본 고유값 인덱스 Fulltext
varchar(255) utf8_unicode_ci   아니오 None   Browse distinct values 변경 삭제 기본 고유값 인덱스 Fulltext
int(11)     아니오 None   Browse distinct values 변경 삭제 기본 고유값 인덱스 Fulltext
varchar(50) utf8_unicode_ci

 

테이블이 위와같이 되어있는데요

랭킹시스템을 구현하려고 합니다.

그렇다고 1~100위까지 차례대로 모두 뽑느것이 아니라

ptr이 높은순서대로 1~10위까지 해당 id가 속해 있으면

해당 id가 몇위인지 알고 싶습니다.

 

SELECT rank FROM
(SELECT id, ptr, @rank := @rank +1 AS rank 
 FROM (SELECT u.id, u.ptr 
FROM doodle_login u LEFT JOIN doodle_login u2 ON u.id = u2.id AND u.ptr < u2.ptr WHERE u2.ptr IS NULL ORDER BY u.ptr DESC)zz, (SELECT @rank :=0)z LIMIT 0 , 10)w WHERE w.id = 'id값'
 
위와 같이 햇엇는데 51900개 row가 있는데 0.5초가 걸린다는 단점이 있습니다 
물론 인덱스도 걸려 있습니다.
이 글에 대한 댓글이 총 3건 있습니다.

 LEFT JOIN을 굳이 써야 하는 이유가 잘 이해가 안 됩니다. 다음처럼 하면 안 되나요?

    SELECT rank FROM (

        SELECT id, ptr, @rank := @rank + 1 AS rank
        FROM doodle_login, (SELECT @rank:= 0) init
        ORDER BY ptr
        LIMIT 10
    ) x
    WHERE x.id = ?
 
허정수(wertyu)님이 2014-07-16 11:15에 작성한 댓글입니다.

감사합니다.

제가 데이터베이스를 속성으로 배워서 문제가 쫌 있습니다ㅜ

신정연(feelsagood)님이 2014-07-16 15:11에 작성한 댓글입니다.

 네. 괜찮습니다. 혹시 제가 놓치고 잘못 이해한 부분이 있나 했습니다.

 

그런데 속도는 좀 빨라졌나요?

허정수(wertyu)님이 2014-07-16 16:08에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30743중복 필터링 쿼리 질문입니다. [4]
더페이퍼
2014-07-25
8675
30742테이블 필드 추가 관련해서 질문이요~ [1]
db초보
2014-07-21
8154
30741innodb_file_per_table 옵션을 사용할경우 성능은 어떻게 될까요? [2]
지종현
2014-07-17
9229
30740해당id의 랭킹을 출력하려고 하는데요 [3]
신정연
2014-07-16
9556
30739서버 시작 후 몇일이 지나면 cpu 사용률이 갑자기 올라가서 내려오지 않습니다. [3]
유영재
2014-07-15
10046
30737mysql URL에서 도메인만 알아왔을때 중복제거 질문입니다 [1]
김미나
2014-07-09
8275
30736mysql 설치하려고 하는데 오류가 떠요 ㅜㅜ [1]
abc
2014-07-03
10047
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.054초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다