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 30175 게시물 읽기
No. 30175
Explain 관련 질문 입니다.
작성자
박지원
작성일
2011-12-28 16:54
조회수
7,400

안녕하세요.

데이타베이스 및 MySQL 그 자체를 갖 접하게 된 왕 초보 입니다.

샘플 디비로 쿼리를 짜는 도중 우연히 Explain 이라는 기능에 대해 알게 되였습니다.

여기저기 검색을 해 보니까 Explain 결과값의 Extra 에서 Using where, Using filesort, Using temprorary 와 같은 값이 나오면 쿼리를 주의해야 한다고 하던데 ..

제가 짠 쿼리에는 위의 3가지 경우가 다 나오더라구요. ㅡ.ㅡ;

그래서 궁금점을 해결하고자 이렇게 질문을 드립니다.

일단 테이블과 쿼리를 보여 드릴게요~

테이블 및 필드:

#SELECT customerNumber, customerName, city, state, country FROM customers;
#SELECT orderNumber, customerNumber, orderDate, requiredDate, shippedDate FROM orders;

실행쿼리:

SELECT A.orderNumber, B.customerName, A.requiredDate, A.shippedDate, A.customerNumber FROM orders AS A
JOIN customers AS B
    ON A.customerNumber = B.customerNumber
WHERE A.shippedDate > A.requiredDate
ORDER BY B.customerName;

결과값: 10165    Dragon Souveniers, Ltd.    2003-10-31 00:00:00    2003-12-26 00:00:00    148

 

여기서 orders 라는 테이블에 orderNumber가 인덱스로 설정되 있구요 총 326건의 데이타가 있습니다.

그리고 상기 쿼리를 실행하고 나면 결과값은 한개 구요..

Explain 에서는 아래와 같이 나와요..

+----+-------------+-------+--------+---------------+---------+---------+--------------------------------+------+----------------------------------------------+

| id | select_type | table | type   | possible_keys | key     | key_len | ref                            | rows | Extra                                        |

+----+-------------+-------+--------+---------------+---------+---------+--------------------------------+------+----------------------------------------------+

|  1 | SIMPLE      | A     | ALL    | NULL          | NULL    | NULL    | NULL                           |  326 | Using where; Using temporary; Using filesort |

|  1 | SIMPLE      | B     | eq_ref | PRIMARY       | PRIMARY | 4       | classicmodels.A.customerNumber |    1 |                                              |

+----+-------------+-------+--------+---------------+---------+---------+--------------------------------+------+----------------------------------------------+

궁금점 : Extra 에서 Using 이 3개 나오게 된 원인 혹은 문제점이 뭔지, 어떻게 하면 상기 쿼리를 최적화 시킬수 있는지 ... 답변 부탁 드립니다.

감사합니다.

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

where 조건 이용해서

나온 값을 temporary 에 넣어서

filesort 를 하는거죠..

민족님이 2011-12-29 10:33에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
30179두개의 테이블 JOIN 시 하나의 데이터만 가져오는 방법 [4]
연이
2011-12-31
8305
30178디비 접속 세션 관련 문의 [2]
이청열
2011-12-29
7771
30177ms-sql 재부팅하고 느려졌습니다.. ㅠㅠ (로그 파일 첨부)
초보
2011-12-29
8894
30175Explain 관련 질문 입니다. [1]
박지원
2011-12-28
7400
30174alter 문 사용 질문입니다. [4]
초보임
2011-12-26
7332
30173주기적인 데이터 삭제 (조건: XX만 row) Query 질문입니다. [2]
김주성
2011-12-22
8490
30172[초보질문]mysql to oracle10g 데이터이관질문..ㅠㅠ [1]
나진산
2011-12-20
7248
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다