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 30215 게시물 읽기
No. 30215
테이블 조인시 all로 묶이는 문제
작성자
최진규(cjg1012)
작성일
2012-02-23 17:45
조회수
7,669

 slow_query 로그에 계속 남겨지는 쿼인데요..

3개의 테이블을 조인하는 쿼리입니다.
 
우선 결과값의 의도는 MT_DIARY가 주가 되어 데이터를 보여주는데요 
MT_INTEREST_MEMBER.favorite_email와 MT_DIARY.email로 필터를 하여 보여줍니다.
MT_MEMBER 테이블은 필터된 내용들중에 MT_MEMBER의 세부정보를 보여주기 위함으로 조인이 된거구요...
너무 느려요..ㅜㅜ
 
한개의 테이블이 인덱스로 조인이 되지 않고 ALL로 조인이 되는것이 원인인거 같은데요..
왜 인덱스가 안되는지 모르겠습니다.
 
테이블 조인 순서도 이래저래 다 변경해봐도 아래의 쿼리가 그래도 최상으로 나오는데요...
(Using where; Using join buffer) 이것때문에 그나마 좀 빠르네요...
 
본쿼리 : 
SELECT        
    A.SEQ,        
    A.EMAIL,        
    A.PUBLIC_OPTION,        
    A.CONTENT,        
    B.NICK_NAME,        
    DATE_FORMAT(A.CREATE_DATE, '%Y-%m-%d %H:%i') AS CREATE_DATE,        
    B.JENDER AS GENDER,        
    B.MAIN_PROFILE_FILE AS PROFILE_URL,         
    (YEAR(CURDATE())-YEAR(DATE_FORMAT(B.BIRTH_DATE, '%Y%m%d')))+1 AS AGE
  FROM MT_INTEREST_MEMBER C, MT_MEMBER B, MT_DIARY A
 WHERE C.FAVORITE_EMAIL = B.EMAIL       
   AND C.FAVORITE_EMAIL = A.EMAIL                     
   AND C.EMAIL = '*****@hanmail.net'             
 ORDER BY A.SEQ DESC;
 
먼저 본쿼리 explain 입니다.
 
 
 
보면 MT_DIARY의 email 과 MT_INTEREST_MEMBER의 favorite_email가 인덱스인데 서로 조인을 하면 왜 all로 읽을까요...
 
 
각각의 테이블들의 INDEX 현황입니다.
 
 
 
이 글에 대한 댓글이 총 1건 있습니다.

 mysql의 경우 selectivity가 30%미만이면 index를 사용하지 않고 full scan을 하는 것으로 알고 있습니다.

 
 
 
mt_interest_member의 경우 129705 / 389115 * 100 = 33.33 % 
mt_member의 경우 223674 / 223674 * 100 = 100%
mt_diary의 경우 40624 / 203121 = 20.00 %
 
 
 
USE INDEX FOR JOIN ( idx1_mt_diary ) 로 강제로 index를 태워서 성능을 비교해 보시는 것도 의미있어 보입니다.
우욱님이 2012-02-24 04:49에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
302193년 전 강의에서 MySQL버전이 6.x 인데.... 현재 버전은 5.5.. [2]
질문
2012-03-05
8789
30217mysql 원격접속에 문제가 있네요ㅠ [1]
안혜진
2012-03-01
8266
30216쿼리문 질문입니다. [1]
이정희
2012-02-28
7282
30215테이블 조인시 all로 묶이는 문제 [1]
최진규
2012-02-23
7669
30214index관련 질문입니다. [4]
지종현
2012-02-22
8944
30213무식한질문-중복값지우기 [1]
김길동
2012-02-21
7982
30212mysql 툴로 접속하려고 하는데 [2]
으악
2012-02-21
14153
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.030초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다