0

以下に定義された2つの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

 class ParentEntity{
       @Id
       String parentId; 
       @ManyToMany
       List<ChildEntity> childEntitiesRef;
    }

 class ChildEntity {  
      @Id
      String childId;  
    }
4

2 に答える 2

3

両方を試してみてください。それが実際に知る唯一の方法です。

両方とも副選択を使用するため、どちらもあまり効率的ではありませんが、通常は結合よりも効率的ではありません。MEMBER OF は副選択を使用します。最良の解決策は、サブセレクトではなく結合を使用して同じクエリを作成する方法を理解することです。ただし、データベースのオプティマイザーがどれだけ優れているかにも依存し、サブセレクトを最適化する場合があります。

于 2013-06-20T14:10:33.030 に答える
0

クエリで親エンティティを使用する必要はありません。子エンティティ参照を使用できます。

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

エンティティ ORM を初めて使用するときは、データをメモリにロードするため、最初は遅いと感じます...

于 2013-06-19T18:18:46.307 に答える