Documentum 응용 프로그램에서 개체를 검색하는 경우 시간이 오래 걸립니다. 우리는 데이터 소스 루시에서 장기 실행 쿼리 옵션을 활성화하지만, 아래 쿼리가 너무 많은 시간이 걸리는 것으로 나타났습니다 : 당신이 테이블을 볼 수 있듯이문서 응용 프로그램에서 장기 실행 쿼리
select all
b.r_object_id, dm_repeating1_0.state_name, a.object_name
from
dm_policy_sp a,
dm_sysobject_sp b,
dm_policy_rp dm_repeating1_0
where
(
(a.r_object_id=b.r_policy_id)
and (dm_repeating1_0.i_state_no=b.r_current_state)
and b.r_object_id in (N'a long, long list of IDs')
or a.r_object_id in (N'a long, long list of IDs')
)
and /* ... */
"a"는 정책 테이블과 만있다가 7 기록. "또는"연산자 뒤에 오는 SQL 문에서 테이블 "a"의 100 개 개체 사이에 object_id
을 찾습니다! 우리는 쿼리를 실행하고 테이블 "b"(systemObjects
)에있는 해당 개체를 검색했으며 해당 개체가 테이블 b에 속한다는 것을 알았습니다!
위의 쿼리에는 약 17 분이 걸립니다. 테이블의 "or"연산자 다음에 테이블의 이름을 b로 변경하면 10 초 밖에 걸리지 않습니다!
이 쿼리가 잘못되었다고 가정합니다. Documentum의 버그인지 또는 Documentum을 잘못 구성했는지 여부는 알 수 없습니다. 우리는이 SQL 또는 관련 구성 요소를 생성하는 DQL을 어디에서 찾을 수 있는지 모른다. 어떤 생각?
당신은 확실 잘못 중첩 된'and' /' 또는'contruction이 의도적인가? – Tomalak
아니요. 관련된 dql 코드를 찾을 수 없습니다! 그러나 객체 목록이 100보다 길지 않습니다. 객체 수가 100보다 많으면 표 "a"에있는 객체가 또 하나 있거나 찾고있을 것입니다! – Govan
첫 번째로, 괄호를''and (b.r_object_id in (...) or a.r_object_id in (...)) '와 같이 배치하십시오. 현재의 방식이 가장 틀리기 때문입니다. – Tomalak