phpbar.de logo

Mailinglisten-Archive

MULTI DELETE

MULTI DELETE

Robert Pleniger ml at rpdev.at
Mit Jan 17 11:00:25 CET 2007


Hallo Thomas

Erst mal der Hinweis, falls Du Ihn nicht eh schon kennst:
http://dev.mysql.com/doc/refman/5.1/en/delete-speed.html

Technik auXion.de wrote:
> Hallo Liste;
> 
> Ich hab da mal ne Frage zum MULTI DELETE.
> Kurze Erklärung:
> Ich bekomme von einem Partner immer aktualisierte Daten und muss die alten
> Daten löschen bevor ich die neuen einpflegen kann.
> 
> Nun hatte ich ein MULTI DELETE über 6 Tabellen versucht, aber geht das so
> ziemlich in die Hose - extrem langes TABLE LOCKING.
> 
> Die Tabellen verknüpfe ich alle über JOIN:
> DELETE t1,t2,t3,z4,z5,z6 FROM table1 t1 left join table2 t2 on t1.id = t2.id
> left join table3 t3 on t1.id = t3.id
> left join table4 t4 on t1.id = t4.id
> left join table5 t5 on t1.id = t5.id
> left join table6 t6 on t1.id = t6.id
> WHERE t1.user_id = IDNUMMER;
> 
> Jetzt sind des viele Datensätze die da gefunden werden, Abhängig vom
> Benutzer den ich suche.
> 
> Hat jemand eine Idee wie man das ganze noch machen kann?
> Um das TABLE LOCKING zu umgehen suche ich jetzt aus table1 alle id`s und
> lösche anhand der id in jeder Tabelle, also 6 * count(id) was ziemlich lange
> dauert.
> 
> 
Meiner Meinung macht eine Aufteilung auf mehrere DELETEs schon Sinn, in 
Form von:

DELETE t2 FROM table2 t2 inner join table1 t2 on t2.id = t1.id
WHERE t1.user_id = IDNUMMER;
DELETE t3 ... bis t6
DELETE FROM table1 WHERE user_id = IDNUMMER;


Es besteht nur die Gefahr, dass verweiste Datensätze entstehen können.
Nämlich dann, wenn zwischen den DELETEs ein INSERT mit selben user_id 
gemacht wird.

MfG
Robert
_______________________________________________
Allgemeine Infos zur Liste: http://www.4t2.com/mysql/
Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de

php::bar PHP Wiki   -   Listenarchive