2014-02-25 2 views
0

SAP Sybase ASE 15.5 데이터베이스.UNION 쿼리가 느리게 작동합니다.

UNION은 (10 개 개의 레코드 각 표 1과 4

select col1,col2,col3 
from table1(INDEX nn MRU),table2 (INDEX hh MRU) 
where key1=key2 
UNION 
select col1,col2,col3 
from table3(INDEX pp MRU),table2 (INDEX ll MRU) 
where key4=key3 

표 1과 3은 작은 매우 느리게 작동합니다 -이다 매우 큰 (68 개 만명 기록을 각각) 그리고 나는 우리가이 활성 기록을 neeed

사실 나는 별도의 쿼리를 시도했습니다. 비활성 레코드를 제거하거나 다른 테이블에 활성 레코드를 선택해도 여전히 시간이 오래 걸립니다. 어제는 하나의 인덱스를 다시 작성합니다. table1,하지만 도움이되지 않습니다.

문제는 회사 규칙에 따라 비활성 레코드를 삭제할 수 없다는 것입니다.

+1

어떤 종류의 Sybase (SAP) DB를 사용합니까? IQ, ASE, ASA? – Parado

+3

답변을 사용하여 의견을 남기십시오. 주석 기능을 사용하거나 질문을 편집하여 추가 정보를 추가하십시오. –

+2

옵티마이 저가 선택하는 것과 반대로 인덱스를 지정하는 이유는 무엇입니까? 테이블과 인덱스 구조에 대해 더 많이 알지 못하면 도움이 될 것입니다. 또한 쿼리 계획을 게시하여 상황이 저조한 곳을 알려줄 수도 있습니다. 어쩌면 활성 레코드 만 포함하는 대형 테이블에 대한 뷰를 작성한 다음 뷰에 대한 UNION을 작성할 수 있습니까? –

답변

0

내 생각에 문제는 노동 조합이 아니라 6 천 5 백만 행이 포함 된 테이블과의 조인 (두 번)입니다. 노조가 문제가 있다고 확신하는 경우 두 가지 별도의 쿼리를 작성하지 않는 이유는 무엇입니까?

비활성 레코드를 보유하고 활성 레코드 테이블을 제거 할 새 테이블을 추가 할 수도 있습니다. 다른 응용 프로그램 논리가 무엇인지 모르겠지만이 쿼리를 빠르게 할 것입니다.

관련 문제