Ich habe eine Anforderung, eine Liste möglicher Duplikate zu erstellen, bevor ein Benutzer eine Entität in der Datenbank speichert und sie vor den möglichen Duplikaten warnt.Effiziente Prüfung möglicher doppelter Entitäten
Es gibt 7 Kriterien, nach denen wir die Duplikate überprüfen sollten und wenn mindestens 3 übereinstimmen, sollten wir dies dem Benutzer melden. Die Kriterien stimmen alle auf ID überein, so dass kein Fuzzy-String-Matching benötigt wird, aber mein Problem rührt von der Tatsache her, dass es viele Möglichkeiten gibt (99 Wege, wenn ich meine Summen korrekt gemacht habe) für mindestens 3 Items die Liste von 7 möglichen.
Ich will nicht 99 separate DB-Abfragen zu finden, um meine Suchergebnisse zu finden, und ich möchte auch nicht die ganze Menge zurück von der db und Filter auf der Client-Seite. Wir sprechen derzeit wahrscheinlich nur von ein paar Zehntausenden von Datensätzen, aber dies wird mit der Reifung des Systems in die Millionen wachsen.
Jeder hat eine gute Möglichkeit, dies zu tun? Ich erwog eine einfache OR-Abfrage, um die Datensätze zu erhalten, wo mindestens ein Feld von der db übereinstimmt und dann eine Verarbeitung auf dem Client zu tun, um sie etwas mehr zu filtern, aber einige der Felder haben eine sehr geringe Kardinalität und werden nicht wirklich Reduziere die Anzahl um einen großen Betrag.
Dank Jon
Danke, denke, dass diese die beste Lösung für mein Problem aussieht. Wir werden immer noch eine Gruppe mit mehreren Elementen am Set machen müssen, aber ein bisschen testen scheint das schneller zu sein als andere Möglichkeiten, die ich ausprobiert habe. – JonC