FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[528] Re:인덱스를 타는데도 시간이 너무 오래걸립니다.
Tk [] 2064 읽음    2002-11-26 23:39
먼저 DDD300 어떤 스타일로 데이터가 싸이는지는 모르지먄..
대부분...where 절 이후
조건들에 순번.. 잘못되서 그런것 같네요.
where 이후 가장 제한적인 컬럼에 조건을 먼저 거는게 가장빠르죠
즉 고등학교(남,여)중  select * from 학교 where 성별 = '여' and 무게 ='40'
인 무게 40인 여자학생을 검색 하는것과
select * from 학교 where 무게 ='40' and 성별 = '여' 것은..
동일안 결과를 보지만.. 속도는 데이터가 많을수록 후자 가 욜라 빠르죠..
데이터가 고용량일경우..
인텍스도 데이터에 값들에. 성격에 따라
오름 또는  내림차순 인텍스를.. 정확하게 판단해야 보다 빠른 결과를 볼수 있쬬...


   
이실 님이 쓰신 글 :
: 안녕하세요..
: 제가 초보라서 맨땅에 헤딩하다가 결국 질문을 올립니다..
:
: windows 2000 에 인터베이스 5.6 을 사용하고 있습니다.
: CPU PII 350MHz 램 256M 입니다.
:
: 데이터베이스 하나에 테이블은 3개 그중 DDD300이라는 테이블이 가장 큽니다.
: 트랜젝션수는 3분에 2~3건정도...
:
: DDD300 이라는 테이블은 컬럼은 40개 정도 되고 3,500,000건 정도의 데이터가 들어있습니다.
: 인덱스는
: SQL> show index DDD300;
: EDDD300_1 INDEX ON DDD300(SYSTEMNO, AGF, ADDR, DATETIME, DRN)
: GDDD300_1 INDEX ON DDD300(SYSTEMNO, AGF, ADDR, DRN)
: RDDD300_1 INDEX ON DDD300(SYSTEMNO, AGF, ADDR, DATETIME, DRN)
: 이렇게 있고요... (왜 같은 컬럼의 EDDD300_1 , RDDD300_1 있는지는 저도잘.. -_-;)
:
: SQL문은 addr을 0~159까지 하나씩 증가시키는 SQL 문을 실행합니다..
: select * from ddd300 where systemno=1 and agf=4096 and addr=0 and datetime >= 37586.58895833336 and drn = 21753;
: select * from ddd300 where systemno=1 and agf=4096 and addr=1 and datetime >= 37586.58895833336 and drn = 21753;
:
: 이렇게 하면 결과가 금방 나옵니다..
:
: SQL>select * from ld300 where systemno=1 and agf=4096 and addr=1 and datetime >= 37586.58895833336 and drn = 21753;
: PLAN (LD300 INDEX (REPORTLD300_1))
:
: 결과...생략.
:
: Records affected: 1
: Current memory = 9578436
: Delta memory = 0
: Max memory = 15067088
: Elapsed time= 0.01 sec
: Cpu = 0.00 sec
: Buffers = 1024
: Reads = 0
: Writes = 0
: Fetches = 31
:
: SQL>
:
:
: 그런데 문제는
: select * from ddd300 where systemno=1 and agf=4096 and addr=2 and datetime >= 37586.58895833336 and drn = 21753;
: 처럼 addr=2 로 하고 실행시키면
:
: SQL>select * from ddd300 where systemno=1 and agf=4096 and addr=2 and datetime >= 37586.58895833336 and drn = 21753;
: PLAN (LD300 INDEX (REPORTLD300_1))
:
: 결과 ..생략
:
: Records affected: 1
: Current memory = 12242892
: Delta memory = 2706432
: Max memory = 15067088
: Elapsed time= 69.48 sec
: Cpu = 2.44 sec
: Buffers = 1024
: Reads = 24289
: Writes = 0
: Fetches = 313446
:
: 처럼 실행 시간이 너무 오래걸린다는 거죠.. T.T
: 분명히 인덱스도 같이 타는데 왜그런지... ?
: 제가 잘 모르는 무언가가 있는건지요..
:
: 다른 해결방법같은건 없을까요?
:
: 그럼 감사드립니다..

+ -

관련 글 리스트
526 인덱스를 타는데도 시간이 너무 오래걸립니다. 이실 1892 2002/11/26
528     Re:인덱스를 타는데도 시간이 너무 오래걸립니다. Tk 2064 2002/11/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.