2012-06-26 3 views
3

MySQL 데이터베이스에서 최대 절전 모드 3을 사용하고 있습니다 (더 이상 성공하지 않고 최대 절전 모드로 시도했습니다). 나는 table-per-concrete-class 상속 전략 (union-subclass)을 구현했다.최대 절전 모드 상속 성능

다형성 쿼리를 제외하고는 작업이 수행됩니다. PKEY가의 속성이기 때문에,

select primKey, param1, param2 from (
    select primKey, param1, param2 from Concrete1 
    union 
    select primKey, param1, param2 from Concrete2 
) 
where primKey == <value> 
order by param1 
limit 100 

이있는 반면로드 전체 콘크리트 테이블의 컨텐츠로 아주 나쁜 성능에 리드 : Hibernate는 "여기서"절은 높은 수준의 쿼리에있는 UNION 기반 쿼리를 생성 추상 부모, subselect에서 "where"절을 정의 할 수 있습니다.

그래서 목표는 Hibernate는 이런 종류의 질의를 생성 얻을 것이다 :

select primKey, param1, param2 from (
    select primKey, param1, param2 from Concrete1 where primKey == <value> 
    union 
    select primKey, param1, param2 from Concrete2 where primKey == <value> 
) 
order by param1 
limit 100 

이 방법 쿼리가 즉시 실행됩니다.

이 동작을 변경하기 위해 최대 절전 모드를 어떻게 구성 할 수 있습니까?

감사

Y.

+0

최대 절전 모드는 확실하지 않지만 저장 프로 시저를 사용하지 않는 이유는 어디에 입력 매개 변수로 primitives와 limit가 있는지 알려주는 것입니다. 또는 뷰 (최적화 된 뷰 - 인덱스 등) - 뷰는 유니온 Croncrete1 및 Concrete2 테이블을 유지하며, [cols] limit?,?에 의해 primKey = value order 인 mView에서 select [cols]를 갖습니다. –

답변

0

한번 비슷한 성능 문제로 고생하지만 더를 필요로 더 나은 성능을 제공하는 "Table per class hierarchy"에 구현을 전환 (이어야 당시) 할 수있는 유일한 해결책을 발견 노동 조합 또는 조인. 그것은 깔끔한 스키마 현명한 아니지만 몇 가지 하위 클래스가 좋은 대안이 될 수 있다면.

관련 문제