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 5572 게시물 읽기
No. 5572
[긴급질문]테이블 조회시 느림 현상 해결법
작성자
김강철
작성일
2010-02-17 11:45
조회수
7,595

테이블 건수가 4백만건 정도 됩니다.

해당 테이블을 아래 쿼리로 조회시 1분 이상 걸립니다.

SELECT count(*) fROM LMD_ACCT_HIS

SELECT MAX(ACCT_TXDAY) AS ACCT_TXDAY FROM LMD_ACCT_HIS WHERE ACCT_NO ='53040101099486' AND BANK_CD = '10000004'

이때 ACCT_NO, BANK_CD 는 키값 5개중 2개.

실행계획은 Clustered Index scan 에 비용이 98%입니다.

이 테이블에 대하여 어떻게 하여야 조회가 빨라질까요?

1. 테이블 데이터 백업 및 삭제

2. 인덱스 추가등의 DB작업

알려주세요 ㅠㅠ

 

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

SELECT count(*) fROM LMD_ACCT_HIS

SELECT MAX(ACCT_TXDAY) AS ACCT_TXDAY FROM LMD_ACCT_HIS WHERE ACCT_NO ='53040101099486' AND BANK_CD = '10000004'

이쿼리의 결과리스트가 얼마인지는 모르겠지만 짧은 소견으로는   ACCT_NO ,  BANK_CD  로 인덱스가 걸려 있는가를 보셔야 할듯 합니다.

두 컬럼이 키구성중 일부라고 하지만 키구성 순서가 어떻게 되는냐에 따라 별도의 인덱스를 만드셔야 할듯 합니다.  4백만건은  자료가 많다고는할수 없을듯 합니다.  물론 테이블이 락상태(인서트나 업데이트 상태일때는 락이 해제 될때까지는 조회가 되지 않을수도 있습니다. with nolock 옵션을 추가

 

지나가다가님이 2010-02-17 17:43에 작성한 댓글입니다. Edit

일단은 ACCT_NO코드와 BANK_CD 구성은

해당BANK_CD을 WHERE BANK_CD="조건값" AND ACCT_NO="조건값"

이렇게 순서 구성 해보심이 어떨런지요.

위의 PK순서는 BANK_CD,ACCT_NO순의로 되어

있는게 좋을것 같구요.

최대한 INDEX SCAN RANGE 폭을 줄여주는

방법이 좋을것 같은데.

해당 BANK_CD와 이에따른 처리된 ACCT_CD로

가는게 어떨런지요.

 

 

김승일(gisfocus)님이 2010-02-17 17:51에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
5575날짜형식문의입니다. [1]
재벌
2010-02-19
7326
5574날짜형식 변환에 관하여 [1]
locust
2010-02-19
8159
5573지정한 시간동안 15분간 데이터를 더해서 그중 최고 혹은 최소값 구하기 [1]
새로운방법
2010-02-18
6568
5572[긴급질문]테이블 조회시 느림 현상 해결법 [2]
김강철
2010-02-17
7595
5571MS ACCESS 중복처리 질문 입니다. [2]
박일호
2010-02-17
6654
5570도와주세염....^^ [1]
향기
2010-02-16
5772
5569Select 한방에 날릴수 있는 방법 [2]
이가루
2010-02-14
7004
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다