Mailinglisten-Archive |
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