1. #1

    Registriert seit
    19.11.2011
    Beiträge
    229
    Thanked 102 Times in 64 Posts

    Standard Duplikate in einer Datenbank

    Guten Morgen ,

    momentan schreibt ein Programm von mir alle paar Sekunden ~1000 zufällige Zeichenketten in eine Datenbank (online). Nun sind natürlich Duplikate dabei.

    Wie kann ich diese am besten Löschen bzw. verhindern?

    • Vor dem Einfügen im Programm prüfen
    • Nachts einen Job laufen lassen, welcher alle bereinigt
    • ...


    Eventuell hat von euch einer mehr Ideen.


  2. #2
    Avatar von Snees
    Registriert seit
    18.11.2011
    Beiträge
    1.001
    Thanked 590 Times in 319 Posts

    Standard AW: Duplikate in einer Datenbank

    Leg eine Liste an mit den bereits benutzen Zeichenketten und prüfe diese vor dem einfügen in die Datenbank bzw. lass dir alle Zeichenketten ausgeben und lass diese auch von einem Programm prüfen und ggf. löschen.

    LG

  3. #3

    Registriert seit
    19.11.2011
    Beiträge
    229
    Thanked 102 Times in 64 Posts

    Standard AW: Duplikate in einer Datenbank

    Zitat Zitat von Tr0pe7 Beitrag anzeigen
    Leg eine Liste an mit den bereits benutzen Zeichenketten und prüfe diese vor dem einfügen in die Datenbank bzw. lass dir alle Zeichenketten ausgeben und lass diese auch von einem Programm prüfen und ggf. löschen.

    LG
    Es handelt sich um eine Datenbank mit mehr als 1.000.000 Datensätzen.
    So wie du das hier beschreibst würde die Workflow so aussehen:

    - Programm wird gestartet
    -- Programm holt sich alle Datensätze der Datenbank und speichert sie
    -- Programm generiert Zeichenkette, durchsucht die Liste und schickt es ggf an die Datenbank.
    - Programm ende

    d.h. Nach jeder generierten Kette müsste ich über 1.000.000 Zeichenketten durchsuchen.

    Das geht wahrscheinlich sehr gegen die Performance...


  4. #4
    Avatar von Snees
    Registriert seit
    18.11.2011
    Beiträge
    1.001
    Thanked 590 Times in 319 Posts

    Standard AW: Duplikate in einer Datenbank

    Ich kann schlecht einschätzen wie es schneller geht, aber könnte man nicht von einem PHP-Script aus per MySQL-Abfrage prüfen, ob der Eintrag vorhanden ist, bevor dieser eingefügt wird? Das wird vermutlich schneller gehen als mit einer eigenständigen Anwendung.

    Code:
    SELECT zeichenkette FROM table WHERE zeichensatz = 'sda0-sa8d-6asd-331c-3ds2'
    Und dann das Resultat auswerten. Sollte schneller gehen oder?

  5. #5

    Registriert seit
    19.11.2011
    Beiträge
    229
    Thanked 102 Times in 64 Posts

    Standard AW: Duplikate in einer Datenbank

    Zitat Zitat von Tr0pe7 Beitrag anzeigen
    Ich kann schlecht einschätzen wie es schneller geht, aber könnte man nicht von einem PHP-Script aus per MySQL-Abfrage prüfen, ob der Eintrag vorhanden ist, bevor dieser eingefügt wird? Das wird vermutlich schneller gehen als mit einer eigenständigen Anwendung.

    Code:
    SELECT zeichenkette FROM table WHERE zeichensatz = 'sda0-sa8d-6asd-331c-3ds2'
    Und dann das Resultat auswerten. Sollte schneller gehen oder?
    Das Prüfen in der Datenbank ja. Allerdings muss ich dann das PHP Script auch aufrufen - nach jedem insert.

    Ich bin von der Lösung nicht ganz überzeugt. Aber eventuell kommen noch andere Ideen oder Argumente für diese Lösung .


  6. #6
    Avatar von Comu
    Registriert seit
    18.11.2011
    Beiträge
    772
    Thanked 753 Times in 363 Posts

    Standard AW: Duplikate in einer Datenbank

    Bei so einer Menge an Datensätzen ist ein Cronjob durchaus von Vorteil. Wie du schon oben beschrieben hast, die komplette DB einmal auf Duplikate durchsuchen. Das Problem wird hierbei die Zeit sein, die das Skript bei so einer großen Anzahl (wofür du die auch immer brauchst!?) braucht.

    Ich weiß ja nicht was du damit vorhast, aber für mich würde es plausibler klingen wenn du die Teile direkt im Script abfragen lässt, was auch immer du abfragst.

  7. #7

    Registriert seit
    19.11.2011
    Beiträge
    229
    Thanked 102 Times in 64 Posts

    Standard AW: Duplikate in einer Datenbank

    Okay das Thema hat sich soeben erledigt.
    Einfach ein identifizierendes Datenfeld (nicht den PrimaryKey) auf UNIQUE setzen und es sind gar keine Duplikate möglich.


  8. The Following User Says Thank You to DANP For This Useful Post:

    Snees (17.03.2012)

Ähnliche Themen

  1. Formulardaten an Datenbank senden
    Von Ruffy im Forum PHP
    Antworten: 4
    Letzter Beitrag: 20.02.2014, 16:36
  2. Datenbank viel zu groß?
    Von Entrafiz im Forum PHP
    Antworten: 7
    Letzter Beitrag: 23.11.2012, 13:52
  3. Datenbank Error
    Von Killerspider im Forum Support
    Antworten: 1
    Letzter Beitrag: 21.02.2012, 17:06
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.