Mam trzy podmioty następująco:Jak zoptymalizować WZP Query
public class EntityA
{
private Long id;
//Getters and setters
}
public class EntityB
{
private Long id;
private EntityA entitya;
//Getters and setters
}
public class EntityC
{
private Long id;
private BigDecimal amount;
private EntityB entityb;
//Getters and setters
}
Teraz, biorąc pod uwagę instancji EntityA, chcę uzyskać listę EntityC. Mam obecnie dwie dostępne opcje. Nie wiem, który z nich jest bardziej zoptymalizowany. Dostępne są następujące opcje:
1.
select c from EntityC c where c.entityb in (select b from EntityB b where b.entitya = :entitya)
2. Dodaj nową właściwość do EntityB
private Set<EntityC> entityCCol;
@OneToMany(mappedBy="entityb")
public Set<EntityC> getEntityCCol()
{
return entityCCol;
}
select b from EntityB a join fetch a.entityCCol b
Która z tych dwóch zapytań jest łatwiejsza i zoptymalizowane?
Co o 'wybierz c z EntityC c gdzie c.entityB.entityA =: a'? jeśli utworzysz to zapytanie i utworzysz indeks IX_B_A na jednostce B (entityA, id), wynikowe zapytanie będzie wystarczająco szybkie. –