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 30839 게시물 읽기
No. 30839
안녕하세요 정렬 후 그룹 데이터 조회 속도가 너무 느립니다..
작성자
초보입니다.
작성일
2015-04-09 17:33
조회수
16,227

테이블 두개를 조인해서 그룹별 최신데이터 한개씩만 찍는 쿼리문을 만들었는데요..

from 절에서 서브쿼리로 조인하기전 정렬하고 조인해서 그룹별로 데이터를 조회합니다.. 근데 자료가 5만건밖에 없는데도 너무 느리게 조회가 되서요..

다른방법이 있는지 여쭙고싶습니다..

 

`num1` int(11) NOT NULL auto_increment,

`local_code` varchar(11) character set utf8 NOT NULL,

`area_code` varchar(40) character set utf8 NOT NULL,

`equip_state` varchar(11) character set utf8 default '2',

`error` int(11) default '0',

`repair` int(11) default '0',

`demander` varchar(40) character set utf8 default NULL,

`demander_number` varchar(40) character set utf8 default NULL,

`repair_charge` varchar(40) character set utf8 default NULL,

`equipment_error` int(11) default NULL,

`modify_request` text character set utf8,

`modify_request_progressing` text character set utf8,

`modify_request_complete` text character set utf8,

`modify_other` text character set utf8,

`repair_date` date default NULL,

`repair_date_complete` date default NULL,

`FILE` varchar(510) character set utf8 default NULL,

`filename` varchar(510) character set utf8 default NULL,

`FILE2` varchar(510) character set utf8 default NULL,

`filename2` varchar(510) character set utf8 default NULL,

`reg_date` datetime default NULL,

PRIMARY KEY (`num1`,`local_code`,`area_code`),

KEY `repair_index` (`area_code`,`local_code`)

) ENGINE=InnoDB AUTO_INCREMENT=154847 DEFAULT CHARSET=euckr

 

 

 

 

select a.area_code,a.local_code,a.rtu_name,a.senser,repair_as.area_code,repair_as.local_code,repair_as.reg_date,equipment_error,equip_state,num1,repair_charge

from circumstances as a ,

(select num1,area_code,local_code,equip_state,repair,equipment_error,repair_charge,reg_date from repair where (equip_state = '1' or equip_state = '2' or equip_state = '3') order by num1 ,area_code desc) as repair_as

where a.area_code= repair_as.area_code and a.local_code=repair_as.local_code and flog='0' and repair_as.equipment_error <> '10' group by a.area_code ;

 

circumstances 과 repair 라는 테이블을 조인하는 sql입니다..원하는 데이터는 얻었지만 검색이 너무 느립니다..좀더 빠르게 바꿀수 있을까요?

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

mysql 잘은 모르지만

or절은 in절로 바꾸시는게 좋을 것 같습니다.

그리고 order by 절은 궂이 limit으로 페이징하지 않는데 궂이 서브쿼리안에서 하실 필요는 없어보입니다.

김주왕(kimjuking)님이 2015-04-10 15:04에 작성한 댓글입니다.
이 댓글은 2015-04-10 15:08에 마지막으로 수정되었습니다.

바쁘신 시간 내주셔서 답변해주신점에 정말 감사드립니다.

이리저리 쿼리문을 바꿔가면서 해봐도 속도가 더 느려지거나 원하는 결과를 얻기가 쉽지 않네요.. 인덱스 최대한 걸어봤는데도 속도가 좀 늦어서 여러가지로 검색해보다 프로시저사용으로 서브쿼리 속도를 해결했다는 글을 발견해서 포퐁검색중입니다.. 정말 감사드립니다..

초보입니다.님이 2015-04-10 19:58에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
30842조회기간이 틀림 품목 그룹으로 합산하기 [1]
김양훈
2015-05-14
7915
30841Mariadb Cluster에서 특정 테이블만 동기화
김성현
2015-05-08
8027
30840MySQL 모니터링하는 모니툴즈라는 툴 발견요. 짜꽁~ ㅋ [1]
김정민
2015-04-16
10285
30839안녕하세요 정렬 후 그룹 데이터 조회 속도가 너무 느립니다.. [2]
초보입니다.
2015-04-09
16227
30838max_allowed_packet 질문입니다.
2015-04-07
8384
30835복제 구성 관련 질문드립니다.
초보입니다
2015-04-07
8398
30834응시자 통계 현황 출력하기 [2]
음악
2015-04-07
8578
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다