Effiziente Lookups, um passende Datensätze für die Sammlung von Verbundtasten zu findenJava

Java-Forum
Guest
 Effiziente Lookups, um passende Datensätze für die Sammlung von Verbundtasten zu finden

Post by Guest »

Das Hauptproblem, das ich habe, ist, dass ich von einer API pagieren muss, um einen Satz von 500K -Datensätzen zu erhalten. Ich habe einen einzigartigen zusammengesetzten Schlüssel erstellt, der auf den folgenden Feldern basiert, um zu finden, ob eine der im DB bereits vorhandenen Kennungen vorhanden sind. Wenn dies der Fall ist, weiß ich, dass ich entweder ein Update basierend auf diesen IDs durchführen kann (neue Werte basierend auf vorhandenen IDs festlegen) oder basierend auf diesen IDs/dann speichern. Ich brauche eine Möglichkeit, eine Suche auf der Sammlung durchzuführen (oben zusammengesetzte Schlüssel). Gibt es eine effizientere Möglichkeit, dies zu tun, außer dem Tastring hier zu tun? (Siehe Code unten) < /p>
Ich habe diesen Code -Snippet, der übereinstimmende Datensätze basiert, die auf einer zusammengesetzten Schlüsselzeichenfolge basieren, und es ist sehr langsam. < /p>
Hauptmethode: < /p>

Code: Select all

private Set existingValues(Set existingValuesBatched) {Set stringCompositeKeys = toStringCompositeKeys(existingValuesBatched);

return someObjectRepository.findExistingBySomeObjectCompositeKeys(stringCompositeKeys).stream().map(someObject -> new SomeObjectCompositeKey(someObject.getSrcId(), someObject.getType())).collect(Collectors.toSet());}
< /code>
toString: < /p>
private Set toStringCompositeKeys(Set compositeKeys) {  return compositeKeys.stream().map(SomeObjectCompositeKey::toString).collect(Collectors.toSet()); }
< /code>
Abfrage: < /p>
@Query("SELECT p FROM SomeObject p WHERE CONCAT(p.srcId, ',', p.type) IN :someObjectCompositeKeys") List findExistingBySomeObjectCompositeKeys(@Param("someObjectCompositeKeys") Set someObjectCompositeKeys);

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post