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 30809 게시물 읽기
No. 30809
SELECT 속도 때문에 질문드립니다.
작성자
바카
작성일
2014-12-17 09:11
조회수
9,742

 

MDP_DATA_DC Table 전체 Row수 가 7천만건 정도 되구요

explain
SELECT DEVICE,STEP,X_PO,Y_PO,H_BIN FROM MDP_DATA_DC WHERE TEST_DATE = '1215' AND STEP = 'A GROUP BY RUN_ID,WF_ID,X_PO,Y_PO;

했을때

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE MDP_DATA_DC ref PART_ID_STEP_LOT_ID_END_TIME_RUN_ID_WF_ID_X_PO_Y_PO,인덱스 1 PART_ID_STEP_LOT_ID_END_TIME_RUN_ID_WF_ID_X_PO_Y_PO 153 const 36867231 Using index condition; Using where; Using temporary; Using filesort

 

이렇게 나오는 상태고.. SELECT 속도가 몇시간이 넘게 걸리네요.. DB쪽은 초짜라서 모르는게 많네요..

INDEX가 잘못걸린건지.. 뭐가 문제인지 고수님들 좀 부탁드립니다.

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

 일단 group by절에 있는 column에 인덱스가 없으면 기본 full scan 들어갑니다. 

temporary는 일단 where 결과를 group by하기 위하여 만들어진 것으로 보여집니다.

일단 확일할 내용은 두개입니다. 

1. 첫번째로 where 조건에 있는 결과 셋이 실제로 몇개인가요?

   실제 결과과 3천6백만건이 group by를 하는 것이라면, 시간이 많이 걸릴 수 밖에 없습니다.

   index보다는 full scan을 선택할 것으로 보입니다. 

2. group by 절에서 사용하는 컬럼을 포함한 복합 인덱스 생성이 되어 있는지 여부입니다.

   test_date, step, run_id, wf_id, x_po, y_po 

  로 인덱스 생성하면 될 듯합니다만....

 

일단, 삼천 육백만건을 검색한다는 내용 자체가 좀... 

gruop by절 전에 실제 사용할 결과 셋을 줄이는 편이 좋을 듯 합니다.

아싸가오리님이 2014-12-17 09:33에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
30815Mysql 업데이트 구문 관련해서 질문드립니다. [2]
손님
2014-12-22
9254
30812[mysql] 행을 열로 변환 하는 방법 문의 드립니다.ㅠㅠ [1]
장창영
2014-12-19
13608
30810user 권한에 따른 성능차이가 있을까요? [1]
송진석
2014-12-17
8572
30809SELECT 속도 때문에 질문드립니다. [1]
바카
2014-12-17
9742
30808검색 관련 질문입니다. [1]
yap
2014-12-16
8565
30807쿼리 질문입니다 [2]
이종원
2014-12-09
9140
30806IDC에 있는 제 리눅스 mysql서버의 레이드에 HDD미러링중인 2개의 하드가 각각 정상인지를 매일 확인해 볼수 있는 방법이 뭘까요? [1]
최용주
2014-12-08
8989
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다