DESC 으로 인한 FileSort 로 인한 질문입니다.
//------------------------------------------------------------
Table Name : TB_STUDENT_LIST
"UID" "int(11) unsigned" "NO" "PRI"
"STATE" "smallint(1) unsigned" "NO" "MUL"
위의 상태에서 order 절에 index 을 타기 이해
create index XAK1_STATEUID on TB_STUDENT_LIST( STATE, UID DESC );
//------------------------------------------------------------
Qry 문에 대해 Explain 을 하니 아래와 같이 나왔습니다.
EXPLAIN SELECT SQL_NO_CACHE RNUM ,STATE
FROM TB_STUDENT_LIST a USE INDEX( XAK1_STATEUID )
WHERE ( ( RNUM in (295003) ) or state > 0 )
ORDER BY STATE, UID
limit 0,15
"1" "SIMPLE" "a" "index" "XAK1_STATEUID"
"XAK1_STATEUID" "6" \N "73513" "Using where"
//------------------------------------------------------------
그런데, 제가 원하는 Query 는 아래와 같습니다.
EXPLAIN SELECT SQL_NO_CACHE RNUM ,STATE
FROM TB_STUDENT_LIST a USE INDEX( XAK1_STATEUID )
WHERE ( ( RNUM in (295003) ) or state > 0 )
ORDER BY STATE, UID DESC
limit 0,15
위와 같은 Query 에서 DESC 을 붙인것에서 FileSort 가 일어나는 문제입니다.
"1" "SIMPLE" "a" "ALL" "XAK1_STATEUID"
\N \N \N "73513" "Using where; Using filesort"
//------------------------------------------------------------
사용 DB 는 4.x, 5.x 버젼에서 다 해보았지만 제가 어느부분을 잘못 했는지
부탁 드립니다..
|