[MySQL] DELETE-Befehl optimieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL] DELETE-Befehl optimieren

    Hallo zusammen,

    habe eine DB mit 2 Tabellen ("table1", "table2"). Beide Tabellen haben eine gleiche Spalte ("id"), und jeweils noch eine content-Spalte, also:


    table1
    --------
    id
    content1


    table2
    --------
    id
    content2 ("content2" ist im Prinzip für das Beispiel irrelevant)


    Das Problem: ich möchte eine bestimmte Menge von Einträgen aus beiden Tabellen löschen! Dabei soll aber nur ein Merkmal (WHERE content1 = "")aus table1 verwendet werden!!!

    Habe auch eine Lösung, welche aus zwei Schritten besteht:

    (1.)
    DELETE FROM table1
    WHERE table1.content1 = ""


    (2.)
    DELETE FROM table2
    WHERE table2.id NOT IN (SELECT id FROM table1)



    Das klappt wie gesagt alles wunderbar, aber NOT IN ist einfach grottenlangsam!!! :-(

    Wer kann mir helfen die Abfrage zu beschleunigen?

    Vielen Dank und viele Grüße,
    squirrel
    Zuletzt geändert von squirrelcgn; 09.01.2009, 02:43.

  • #2
    Entweder Fremdschlüssen (z.B. mit InnoDB) ...
    ... oder multi table delete weil das spezifiziert, was gelöscht wird und nicht was nicht gelöscht wird ...
    ... oder EXISTS Operator ...
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Hallo goth,

      schonmal vielen Dank für deine Antwort - werde heute Abend deine Tipps mal antesten und dann Rückmeldung geben.

      Viele Grüße,
      squirrel

      Kommentar

      Lädt...
      X