steffi: Doppeleintragung verhindern.

moin!
da ich bei meiner db einen datenabgleich durchführe, sobald neue daten vorhanden sind, ergab sich folgendes problem:
-jeder eintrag ist mit einer speziellen nummer versehen (nicht fortlaufende id, sondern beständige identifikationsnummer des eintrags!)
-zu jedem eintrag werden anfangs infos abgelegt
-diese infos werden ab und zu erneuert
-es kann nicht ohne überprüfung festgestellt werden beim importieren der neuen daten, ob ein eintrag schon vorhanden ist oder nicht; daher führte ich nun immer einen
DELETE ... WHERE ident_nr=...
und dann einen INSERT ... query durch.
da ich annahm, es wäre langsamer SELECT COUNT...WHERE... und dann entweder UPDATE SET... oder INSERT ... zu verwenden.
auf jeden fall ist die db so groß, dass der DELETE WHERE query manchmal bis zu 8 sekunden dauert, was bei 1000 neuen einträgen, wovon ca 500 erneuert werden müssten, schon lange dauert!
gibt es eine funktion oder geschicktere methode, einträge zu erneuern, bei denen eine bestimmte spalte mit einem bestimmten wert(identifikations-nummer) identisch ist; bzw sofern nichts dazu vorhanden ist, einfach neu erstellt wird?
danke für Eure hilfe!
gute nacht

  1. echo $begrüßung;

    gibt es eine funktion oder geschicktere methode, einträge zu erneuern, bei denen eine bestimmte spalte mit einem bestimmten wert(identifikations-nummer) identisch ist; bzw sofern nichts dazu vorhanden ist, einfach neu erstellt wird?

    Welches DBMS (am besten inklusive Versionsnummer) verwendest du?

    echo "$verabschiedung $name";

    1. Welches DBMS (am besten inklusive Versionsnummer) verwendest du?

      mein webhoster verwendet: MySQL 4.0.23

  2. echo $begrüßung;

    [...] führte ich nun immer einen
    DELETE ... WHERE ident_nr=...
    und dann einen INSERT ... query durch.

    Das würde REPLACE auch tun aber eben als ein Befehl.

    da ich annahm, es wäre langsamer SELECT COUNT...WHERE... und dann entweder UPDATE SET... oder INSERT ... zu verwenden.
    auf jeden fall ist die db so groß, dass der DELETE WHERE query manchmal bis zu 8 sekunden dauert,

    Fehlt da vielleicht ein Index für das in der WHERE-Klausel angegebenen Feld? Oder vielleicht kann MySQL keinen Index aufgrund einer ungünstigen WHERE-Klausel verwenden.

    echo "$verabschiedung $name";