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 5290 게시물 읽기
No. 5290
4천만건 데이터 중 TOP 1 추출
작성자
질문
작성일
2009-07-30 13:53
조회수
6,884

안녕하세요?


감히 감이 안잡히는 문제를 조언을 듣고자 하여 조심스럽게 선배님들께 조언을 구합니다.


데이터가 4천만건 가량이 들어가있는 테이블이 있습니다.


테이블 구조는 가상으로 다음과 같습니다.


test_table

order_id varchar(13)

order_div varchar(1)

order_type varchar(1)


데이터가

order_div = 'A'이고 order_type = '1'인걸로 천만건

order_div = 'A'이고 order_type = '2'인걸로 천만건

order_div = 'B'이고 order_type = '1'인걸로 천만건

order_div = 'B'이고 order_type = '2'인걸로 천만건


합쳐서 4천만건가량이 존재합니다.


그런데 이중에 특정 조건에 따라 천만건중에 TOP 1을 채번해와야 하는 경우인데

첫번째 'A' 구분 '1' 타입은 정렬이 이미 최상단에 위치하고 있어 채번시

시간소요가 약 0.1초가량 밖에 걸리지 않는데

'B' 구분의 '1' 타입을 검색하면 3초 이상이 소요됩니다.


쿼리는 간단하게

select top 1 order_id test_table

where order_div = 'A'

and order_type='1'

[약 0.1초 소요]


select top 1 order_id test_table

where order_div = 'B'

and order_type='1'

[약 2.3초 소요]


게시판을 보며 인덱싱을 해보아도 2초 이내로 쿼리가 되지 않아

다량 처리시 시간소요가 너무나도 오래걸리고 있습니다.


어떻게 해결하는것이 좋을지 선배님들의 조언을 부탁드리겠습니다 (__)


항상 행복한 하루 되세요!

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

인덱스를 어떻게 생성하셨는지 모르겠지만,

odrder_div+order_type

로 인덱스를 생성하시면 0.1 초 만에 인덱스를 스캔하여 답이 나옵니다.

테이블 호출 쿼리를 잘 분석하셔서 인덱스 전략을 세우셔야 합니다.

다른 쿼리에서 odrder_div 나 order_type 의 호출 빈도가 높은 쪽을 앞쪽으로 해서 생성하셔야,

인덱스를 제대로 탈수 있겠지요..

그럼 수고하세요...

비젼하버님이 2009-08-04 16:50에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5293쿼리결과를 update하는 프로시져 만들려고 하는데요...
김삼수
2009-08-05
5816
5292두개 테이불 비교 없는 레코드만 나오게 ??? [2]
김길동
2009-08-05
5649
5291[급질문]SQL 질문 하나 올리겠습니다. 많은 조언 부탁 드립니다~
비젼하버
2009-08-04
5239
52904천만건 데이터 중 TOP 1 추출 [1]
질문
2009-07-30
6884
5289카운트뽑아오는 쿼리인데, 반환 속도가 2분30초 걸립니다. (IN 질의 사용) [1]
ganjang
2009-07-27
5366
5288전문용어집 데이타베이스 구축방법을 알겠습니다. (초보)
최원식
2009-07-23
5153
5287컬럼에 수식이 들어있다면 계산을 할수 있을까요? [1]
인트레더블
2009-07-22
5453
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다