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 29713 게시물 읽기
No. 29713
order by 시 속도 단축 방법 질문 드립니다.
작성자
권기혁(leolo)
작성일
2010-06-29 17:25ⓒ
2010-06-29 17:26ⓜ
조회수
6,925

order by 시 속도 단축 방법 질문 드립니다.

 

테이블은 아래와 같습니다.

CREATE TABLE U_MEMBER (
 MEMBER_SEQ INT(8) NOT NULL AUTO_INCREMENT,  
 MEMBER_ID VARCHAR(32) NOT NULL,   
 MEMBER_NAME  VARCHAR(32) NOT NULL,   
 MEMBER_PASSWORD VARCHAR(24) NOT NULL, 
 STATION_CODE INT(8),     
 DEPT_CODE INT(8),     
 GRADE_CODE INT(8),     
 EMAIL  VARCHAR(64),
  PRIMARY KEY(MEMBER_SEQ, MEMBER_ID)
) ENGINE=MYISAM DEFAULT CHARSET=EUCKR;

 

 

CREATE TABLE U_GRADE (
 GRADE_CODE  VARCHAR(32) NOT NULL, 
 GRADE_NAME VARCHAR(32),  
 DISP_ORDER INT(4),   
 PRIMARY KEY(GRADE_CODE) 
) ENGINE=MYISAM DEFAULT CHARSET=EUCKR;

 

 

CREATE TABLE U_DEPT (
 DEPT_CODE   VARCHAR(32) NOT NULL, 
 DEPT_NAME   VARCHAR(64),  
 PRIMARY KEY(DEPT_CODE)
) ENGINE=MYISAM DEFAULT CHARSET=EUCKR;

 

 

U_MEMBER 테이블에 약 3만건의 데이터가 들어간 경우,

아래 질의를 하면 0.094 정도의 속도가 나옵니다.
 

 SELECT
 MEM.MEMBER_SEQ SEQ,              
 MEM.MEMBER_ID ID,              
 MEM.MEMBER_NAME NAME, 
 GRADE.GRADE_NAME,
 MEM.EMAIL EMAIL  
 FROM
 U_MEMBER MEM,
 U_GRADE GRADE
 WHERE
 MEM.MEMBER_ID = MEM.MEMBER_ID
 AND MEM.GRADE_CODE = GRADE.GRADE_CODE
 ORDER BY MEM.MEMBER_NAME ASC LIMIT 0, 6;

 

index는 아래와 같습니다. 걸어준게 없죠.

이렇게 저렇게 걸어줘도 속도가 나오지 않아서.

직위도 그렇고, 부서도 나중에 select에 추가해야 되는데 속도를 좀더 빨리 할 수는 없는지.

부탁드립니다.
mysql> SHOW INDEX FROM U_MEMBER;
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| U_MEMBER |          0 | PRIMARY  |            1 | MEMBER_SEQ  | A         |        NULL |     NULL | NULL   |      | BTREE      |         |
| U_MEMBER |          0 | PRIMARY  |            2 | MEMBER_ID   | A         |       30000 |     NULL | NULL   |      | BTREE      |         |
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
2 rows in set (0.00 sec)

mysql> show INDEX FROM U_GRADE;
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table   | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part| Packed | Null | Index_type | Comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| U_GRADE |          0 | PRIMARY  |            1 | GRADE_CODE  | A         |           5 |     NULL| NULL   |      | BTREE      |         |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
1 row in set (0.00 sec)

이 글에 대한 댓글이 총 1건 있습니다.

 

MEMBER_ID ,GRACE_CODE , MEMBER_NAME 으로 다중 인덱스 잡아 주시면

 

order by 안하셔도 될거 같습니다. 한번 해보시고 속도 체크 해보시기 바래요~

민족님이 2010-07-02 17:47에 작성한 댓글입니다.
이 댓글은 2010-07-02 17:48에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
29716mysql 에러 질문 [1]
돌머리
2010-07-02
8369
29715프로시져 실행후, 다시 쿼리 실행하는 경우 에러 발생 (Commands out of sync; you can't run this command now)
지종현
2010-07-01
7361
29714MySQL Lock 발생시 해결 방법 [1]
이철수
2010-06-30
7151
29713order by 시 속도 단축 방법 질문 드립니다. [1]
권기혁
2010-06-29
6925
29712오라클의 user_source 함수와 같은것 찾아주세요..
다크라이온
2010-06-29
6897
29708쿼리문 질문....
김민수
2010-06-25
6835
29707replication 시 information_schema 문의 [4]
김대종
2010-06-25
6935
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다