2014-03-13 4 views
0

Mysql5.x를 사용하고 정수 필드가 fld_experience 인 사용자에 대해 db 테이블을 가지고 있습니다. 이름에서 알 수 있듯이 사용자의 경험이 있으며 전체 목록에서 사용자의 순위 (순위)를 얻으 려하므로 전체 테이블에 사용자의 순위를 표시 할 수 있습니다. 다른 사용자의 경험은 언제든지 변경 될 수 있으므로 계급을 필드로 저장할 수 없으며 요청시 계산해야합니다. 여기카운트 명령이있는 select 문을 빠르게하는 방법

나는 그것을 어떻게 할 수있는, 사용자

SELECT COUNT(fld_experience) + 1 
FROM tbl_users 
WHERE fld_experience > (SELECT fld_experience 
         FROM tbl_users 
          WHERE fld_user_id = ?) 

내가이 요청을 가속화 할 순서를 SQL 문을 얻을 수 있습니까? 인덱싱 fld_experience이 작동하는지 정말 궁금합니다.

답변

0
SELECT COUNT(fld_experience) + 1 
FROM tbl_users, (SELECT fld_experience 
         FROM tbl_users 
          WHERE fld_user_id = ?) selected_user 
WHERE fld_experience > selected_user.fld_experience 
+0

왜 더 빠를까요? – hevi

+0

WHERE 내 각 행보다 한 번만 실행됩니다. – StanislavL

+0

색인 생성은 어떻습니까? fld_experience를 사용하면 색인 생성이 더 빠를 것이라고 생각하십니까? – hevi

관련 문제