MySql이든지 MsSql이든지 Oracle이든지 실행계획 중요하죠. 내가 날린 쿼리가 얼마나 효율
적인지 알수 있고 또한 사전에 문제점을 파악할수 있도록 도와주는 참으로 좋은 계획(?)이죠.
MySql에서의 문법은
EXPLAIN tbl_name(테이블 구조를 나타냅니다.)
EXPLAIN SELECT select_options(실행계획을 표시합니다.)
EXPLAIN SELECT select_options의 결과에 나오는 항목을 살펴보면
table : 테이블명
type : 조인의 타입
- system : 테이블이 하나의 레코드만 가지는 경우
- const : 테이블에 조건을 만족하는 레코드가 하나일 때, 상수 취급
- eq_ref : 인덱스가 UNIQUE이거나 PRIMARY KEY인 경우의 조인으로 const를 제외한 조인
중 가장 좋은 형태
- ref : eq_ref와 다른점은 UNIQUE가 아닐 경우 사용한다는 것
- range : 조건에 레코드의 범위가 주어진 조인
- index : all 형태와 비슷하며, 인덱스를 사용한다
- all : 모든 레코드를 스캔한다
possible_keys : 테이블에서 사용 할 수 있는 키(인덱스)
key : possible_keys에 나온 키 중에서 실제로 사용한 키
key_len : 키의 길이
ref : 인덱스를 사용할 때 어떤 컬럼과 조건이 맞아야 하는지
rows : 조건을 만족하는 레코드를 찾기 위해 몇개의 레코드를 검사해야 하는지
extra : 부가정보
- distinct : 조건을 만족하는 레코드를 찾았을 때 같은 조건을 만족하는 또 다른 레코드가 있
는지 검사하지 않음
- not exist : left join 조건을 만족하는 하나의 레코드를 찾았을 때 다른 레코드의 조합은 더
이상 검사하지 않는다
- range checked for each record : 최적의 인덱스가 없는 차선의 인덱스를 사용한다는 의미
- using filesort : mysql이 정렬을 빠르게 하기 위해 부가적인 일을 한다
- unsing index : select 할때 인덱스 파일만 사용
- using temporary : 임시 테이블을 사용한다. order by 나 group by 할때 주로 사용
- where used : 조건을 사용한다는 의미
이젠 MySql도 실행계획에 빠져 봅시다.
'발자 이야기 > DataBase' 카테고리의 다른 글
| MS-SQL에서 DB통으로 붙이기. (0) | 2007/06/01 |
|---|---|
| MySql 실행계획 2. (6) | 2007/02/16 |
| MySql 실행계획. (6) | 2007/02/09 |
| Mysql 프로세스 리스트 보기. (2) | 2007/01/30 |
| Mysql Timestamp필드를 Datetime형태로 출력. (4) | 2007/01/23 |
| TimeStamp. (6) | 2006/12/21 |









댓글을 달아 주세요
마이에스큐엘도 이제 실행계획기능까지 제공을 하나 보네요.
2007/02/09 11:46정말 많이 좋아졌네...
옛날부터 있었는데, 내가 몰랐던겐가.... -_-;;
어제 감동의 물결을 하나 발견했습니다.
2007/02/09 11:59Toad For MySql. 더 감동인것은 프리웨어 ㅠㅠ.
토드를 사용하는지라 눈에 익숙하고 정말 좋더라구요.
개인적으로 쓰는거라 타 MySql관리툴 사기도 뭐했는데
정말 기분 쵝오입니다.
DB사용량이 너무 많아서 어쩔수 없습니다. 새로 구입해야 겠습니다. -윗 선에 이야기 할때-
2007/02/09 11:51일단 사고나면 몇 개의 쿼리 비싼거 같은데 그 후에는 튜닝 좀 해주세요. -개발자들에게 이야기 할때-
걍 잘 돌면 됐죠 뭘.... -관리자들 끼리 잡담 할때-
흐흐흐.
2007/02/09 12:00깨지도록 그냥 냅둔다.. - 나의 필요성을 어필할 때.. -
2007/02/20 14:38음... 괜찮은 메쏘드인걸.
2007/02/20 20:51