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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Effiziente Lookups, um passende Datensätze für die Sammlung von Verbundtasten zu finden

by Guest » 14 Feb 2025, 03:37

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);

Top