MySQL: löschen
Frank
- datenbank
Hi,
ich habe zwei Tabellen A und B.
Ich möchte nun alle Zeilen aus A löschen, die auch in B vorhanden sind. Vielmehr in der eine Spalte gleich ist, aber das ist ja dann (fast) das gleiche.
Bisher mache ich das so:
delete from tab_a using tab_a,tab_b where 1 and tab_a.text=tab_b.text
dabei sind tab_a/tab_b die Tabellen, text soll die Spalte sein.
Ich glaube, das ist nicht sehr effektiv, geht es besser???
Danke!
Halihallo Frank
delete from tab_a using tab_a,tab_b where 1 and tab_a.text=tab_b.text
das "1 and" kannst du dir sparen, das ist redundant.
Ich glaube, das ist nicht sehr effektiv, geht es besser???
Es ist sehr effektiv und sogar effizient. Eine mögliche Verbesserung wäre ein Index
auf text, dann geht das selektieren der gleichen texte schneller und somit das löschen.
Wo ist denn das Problem?
Viele Grüsse
Philipp
Hi Philipp,
delete from tab_a using tab_a,tab_b where 1 and tab_a.text=tab_b.text
das "1 and" kannst du dir sparen, das ist redundant.
ist 'ne Angewohnheit. In dem Fall braucht man es nicht, aber bei Variablen dahinter schon manchmal...
Ich glaube, das ist nicht sehr effektiv, geht es besser???
Es ist sehr effektiv und sogar effizient. Eine mögliche Verbesserung wäre ein Index
auf text, dann geht das selektieren der gleichen texte schneller und somit das löschen.
Wo ist denn das Problem?
Es dauert sehr lange! Aber ich habe auch nur einen 233er Pentium mit 128MB Ram... naja.
Index hatte ich auf das betreffende Feld nicht gesetzt, mal sehen.
Das ist 'ne Prima Idee!!! Danke!
Ich kenne schon "explain select ...."! :-)
Aber ich habe meine Tabellen schon so oft geändert, daß mir das jetzt wohl abhanden gekommen ist!
Gruß
Frank