인덱스 및 튜닝에 관한 질문입니다. 0 1 1,991

by pirusira [SQLServer] [2011.03.21 17:50:55]



3개의 테이블이 있습니다. 구조는 다음과 같습니다. (제가 성능을 올리고자 하는 쿼리에서 사용하는 컬럼만 명시하겠습니다.)


PRINTER

컬럼

id(int, not null), ipaddr(varchar(25), not null), model(varchar(128)), groupcode(varchar(30)), paneltext(varchar(255)), statcode(varchar(10)), gettime(char(14)), total_count(int)

인덱스

id에 clustered index


STATE_CODE

컬럼

code(varchar(10)), err_type(tinyint)

인덱스

code에 clustered index 


PE_USAGE

컬럼

printerid(int), pages(smallint), computation_price(float)


이상이고 키나 제약조건은 셋다 없습니다;;


select top 10 a.ID, a.IPADDR, a.MODEL, a.GROUPCODE, a.PANELTEXT, isnull(sum(d.PAGES),0) as PAGES,
     a.STATCODE, a.GETTIME, isnull(a.TOTAL_COUNT,0) as TOTAL_COUNT, isnull(c.ERR_TYPE,3) as ERR_TYPE,
     isnull(sum(d.COMPUTATION_PRICE),0) as COMPUTATION_PRICE
from PRINTER as a left outer join STATE_CODE as c on(a.STATCODE=c.CODE) left outer join PE_USAGE as d on(a.ID=d.PRINTERID)
group by a.ID, a.IPADDR, a.MODEL, a.GROUPCODE, a.PANELTEXT, a.STATCODE, a.GETTIME, isnull(a.TOTAL_COUNT,0), isnull

    (c.ERR_TYPE,3)
order by GETTIME desc


이렇게 쿼리를 날리면 시간이 너무 오래걸립니다..

인덱스를 추가하거나 어떤 튜닝을 통해서 성능을 향상할수 있나요? 아니면 쿼리 자체가 비효율적인가요?

답변을 위한 정보가 부족하시다면 말씀해 주세요 추가하겠습니다.

by pirusira [2011.03.21 18:46:50]
PE_USAGE의 printerid에 인덱스를 주니까 해결 되었습니다~
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입