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

FireBird Q&A
[2562] 찾았읍니다. 하하.
까막 [ggamagui] 2248 읽음    2007-07-26 11:37
까막 님이 쓰신 글 :
: 안녕하세요. 까막입니다.
:
: 청구정보를 저장하는 테이블이 있는데요.
: CustomerId, DMonth 라는 필드를 Primary Key 로 지정을 했읍니다. 오름차순이지요. -> Demand_PK
: 그리고, DMonth 필드에 따로 내림차순으로 Index 를 걸었고요.  -> Demand_Idx
:
: Query 조건문에서요.
:
: WHERE  CustomerId  = '00041027'
: AND       DMonth      <= '200902'
:
: 이 조건을 줬을때, Index 를 Demand_Idx 를 사용하더군요.
: DMonth 필드에 내림차순으로 걸어둔 Index 요.
:
: 위 조건은 Demand_PK 를 사용하리라고 생각을 했는데,
: 다른 Index 를 사용해버려서 결과 도출이 많이 늦어지게 됩니다.
: Demand_Idx 를 삭제하고 실행하면 많이 빨라지고요. 건수가 많아질수록 차이가 벌어지겠죠.
:
: 다른 Query에서 Demand_Idx 를 사용하기 때문에 이 Index 를 삭제할수도 없거든요.
: 마찬 가지로 속도문제 때문에요.
:
: 강제로 사용할 Index 를 지정할 방법이 있을까요?
: SQL Server 등에서는 Index 지정이 가능한데, Firebird 는 찾아봐도 잘 모르겠더군요.
:
: 도움 부탁드립니다.
:
:
:
: 위대한 단군혼이 살아있는 나라.... 대한민국.

안녕하세요. 까막입니다.

강제 지정법을 찾았네요. 하하.
IB Expert 에서 Query 를 실행하면 Message 창에 어떤 Index 를 사용했다고 나오잖습니까?

그걸 가만히 들여다 보고 있자니... PLAN 이라는 문구가 자꾸 눈에 띄더군요.
말 그대로, 이러 이러한 Index 를 사용하겠다는 계획 아닙니까?

그래서, 그 문구 그대로 Query 문에 적용을 해봤지요. ^^

WHERE  CustomerId  = '00041027'
AND       DMonth      <= '200902'
PLAN    (Demand INDEX (Demand_PK))

이렇게 해서 실행하니, 원하는 대로 Demand_PK 를 사용해서 실행을 하는군요. 하하.
지금까지 무심히 보고 넘어갔던 부분에 답이 있었음을 모르고, 생고생을 했네요. ^^;



위대한 단군혼이 살아있는 나라.... 대한민국.

+ -

관련 글 리스트
2561 Query 실행시 사용할 Index를 지정하는 방법이 있을까요? 까막 2271 2007/07/26
2562     찾았읍니다. 하하. 까막 2248 2007/07/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.