2013-06-19 2 views
0
한 (시간 제약)에보다 효과적인 성능을 아래 정의

두 JPQL 질의하거나 동등한 성능 -JPQL 쿼리 성능

ParentEntity < => ChildEntity [대다 관계로 다수 존재]

SELECT me from ChildEntity me where me <> All(select me.childEntitiesRef from ParentEntity pe where pe.parentId=:parentId) 

또는

SELECT me FROM ChildEntity me, ParentEntity pe WHERE me NOT MEMBER OF pe.childEntitiesRef AND pe.parentId=:parentId 

+0

ChildEntity와 ParentEntity 간에는 어떤 관계가 있습니까? 속성과 함께 엔티티 클래스를 넣을 수 있습니까? – meyquel

+0

ChildEntity와 ParentEntity간에 ManyToMany 관계가 있습니다. – user225928

답변

2

두 가지 방법을 모두 사용해보십시오. 알아야 할 유일한 방법입니다.

일반적으로 조인보다 비효율적 인 하위 선택을 사용하기 때문에 어느 쪽도 매우 효율적이지 않습니다. MEMBER OF는 (는) 하위 선택을 사용합니다. 가장 좋은 해결책은 하위 쿼리가 아닌 조인을 사용하여 동일한 쿼리를 작성하는 방법을 찾는 것입니다. 그러나 데이터베이스의 최적화가 얼마나 좋은지에 따라 하위 선택을 최적화 할 수도 있습니다.

0

쿼리에서 부모 엔티티를 사용할 필요가 없습니다, 당신은 자식 엔티티 참조 사용할 수 있습니다

where me.parentId.parentId (<>=...) param 

처음 당신 사용자 느린인지 왜 firt 시간 메모리 데이터의 엔티티 ORM로드. ..