Verwenden Sie eine unique constraint
. Versuchen Sie, den Datensatz einzufügen/aktualisieren, und fangen Sie die Ausnahme ab, die ausgelöst wird, wenn die eindeutige Einschränkung verletzt wird. Nur so kann eine eindeutige E-Mail-Adresse garantiert werden; Das erste Überprüfen und dann Aktualisieren ist anfällig für Parallelitätsprobleme, da es möglich ist, dass jemand anderes seinen Datensatz auf denselben Wert aktualisiert, den Sie festlegen möchten, kurz nachdem Sie die Überprüfung durchgeführt haben und bevor Sie den Datensatz aktualisieren.
Außerdem:Erfahren Sie, wie Sie where
verwenden
-Klauseln. Sie rufen jetzt ALLE Datensätze ab, iterieren über sie usw., was unnötig viele Ressourcen beansprucht, zu lange dauert und nur eine reine Verschwendung ist. Wenn Sie nach einem Datensatz suchen möchten, der einem Kriterium entspricht, schreiben Sie:
Select foo, bar from table where baz = 123
Wobei baz = 123
ist dein Kriterium. Stellen Sie sich vor, was passieren würde, wenn Sie 500 oder sogar 500.000 Datensätze in Ihrem aktuellen Setup haben. Die Datenbank würde Ihre Abfrage ausführen, ALLE Zeilen aus dieser Datenbank sammeln und sie an Ihre Anwendung übertragen, wo Ihre Anwendung alle 500.000 Ergebnisse iterieren würde. Oder Sie bitten die DB, das zu tun, was sie gut kann (und warum Sie sie überhaupt verwenden):Geben Sie die/alle Datensätze, die Kriterium X erfüllen. Sie würden 1 oder keine Datensätze erhalten (angesichts der eindeutigen Einschränkung):1 =einige Datensätze entsprechen Ihrem Kriterium, keine =keine Datensätze vorhanden. Erspart das Übertragen und "händische Anschauen" von 499.999 Datensätzen;-)