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
운영게시판
최근게시물
MS-SQL Q&A 4344 게시물 읽기
No. 4344
속도 튜닝 질문 입니다. ㅜㅜ
작성자
초보입니다.
작성일
2008-07-22 18:11
조회수
5,837

안녕하세요
초보 개발자입니다.

MS-SQL 속도 튜닝을 하는데 생각처럼 잘 안되서 고수님의 조언을 듣고자 글을 올리게 되었습니다.

------------------------------------------------------------------------------------
SELECT  '2008-07-21' AS SDAY,
   X.SMINUTE AS STIME, ISNULL(Y.CallCnt, 0) RESULT  
FROM  TB_MINUTE X WITH (NOLOCK) 
  LEFT OUTER JOIN
  (
   SELECT SUBSTRING( CONVERT( VARCHAR, InsertTime, 120), 12, 5) AS SMINUTE,
    COUNT(*) AS CallCnt
   FROM Message_0721 A WITH (NOLOCK),
    Massage_Info B WITH (NOLOCK)
   WHERE A.MessageName = B.MessageName AND A.SubMessageName = A.SubMessageName
   GROUP BY SUBSTRING( CONVERT( VARCHAR, InsertTime, 120), 12, 5)
  ) Y
 ON X.SMINUTE = Y.SMINUTE 
ORDER BY X.SMINUTE
------------------------------------------------------------------------------------

Message_0721 테이블은 21일 하루치 메시지 정보를 가지고 있고, 로우개수는 약 6만건 정도 됩니다.
index 는 MessageName, SubMessageName

Massage_Info 테이블은 고유 메시지 정보를 가지고 있고, 로우개수는 약 1천건 정도 됩니다.
index 는 MessageName, SubMessageName

TB_MINUTE 는 00:00(시:분) ~ 23:59 의 시분 데이터를 가지고 있는 공통 테이블입니다.(로우개수는 1440)

InsertTime은 년-월-일 시:분:초 로 데이터가 들어가있어서 SUBSTRING으로 나누게 되었습니다.

위의 쿼리를 7번 실행시켜
임시테이블에 저장한 뒤 7일치의 데이터를 한꺼번에 가져오는 방법을 사용하고있는데요
UI에서 사용하는데 대략 40초 ~ 1분정도가 소요되네요 ;;;;;
(위의 쿼리만 실행하면 대략 3~4초  3 * 7=28 ㅠㅠ)

5초이내로 줄이고 싶은데
다른 방법으로 쿼리를 해야하는지 아니면 인덱스 문제인지... 고수님의 따스한 조언 부탁드립니다. ㅜㅜ)

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


그런후 INSERTTIME 을  원하는 형식으로 만들어 놓은 C_INSERTTIME  이라는 계산될 컬럼추가 

TB_MINUTE 
 아래와 HASH 조인연결 
 
       MESSAGE_0721
       C_INSERTTIME + MESSAGENAME + SUBMESSAGENAME 으로 NONCLUSTERED INDEX 

       아래와 MERGE JOIN

       MESSAGE_INFO 
       MESSAGE_NAME + SUBMESSAGENAME 


제안된 시간은 아주 충분할듯 합니다.

.님이 2008-07-23 04:37에 작성한 댓글입니다.
이 댓글은 2008-07-23 04:39에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4348근접한 수 찾기... [3]
남용욱
2008-07-23
5376
4346영문자를 한글과 같은 2byte로 읽는 방법? [1]
조중규
2008-07-23
4782
4345아래 트리거에 대한 추가 질문입니다. [2]
학생
2008-07-23
4908
4344속도 튜닝 질문 입니다. ㅜㅜ [1]
초보입니다.
2008-07-22
5837
4343Java Enterprise 무료세미나 2008.08.02
김하늘
2008-07-22
4097
4342업데이트 트리거 질문입니다. [1]
학생
2008-07-22
4833
43405000개 이상의 최근 가격을 어떻게 가져올까요? [3]
김갑열
2008-07-21
10674
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다