Mailinglisten-Archive |
Tobias Mueller-Wrana schrieb: > Eine extrem lang laufende Abfrage (so in der Art) als Bsp.: > > select * from Tabelle1, Tabelle2 where Tabelle1.id=Tabelle2.id and > Tabelle2.id not in (select distinct(id) from Tabelle3); ich kenn mich nicht 100% aus bei ... NOT IN (SELECT ...) aber ich würde vermuten das MySQL es hier eher schwer hat den Index vernünftig zu verwenden ... vielleicht wäre folgendes etwas schneller: SELECT * FROM Tabelle1 LEFT JOIN Tabelle2 USING (id) LEFT JOIN Tabelle3 USING (id) WHERE ISNULL(Tabelle3.id) oder HAVING ISNULL(Tabelle3.id) > Anmerkung: Das ist die Abfrage, die wir bräuchten um den "Müll" > aus der DB zu entfernen... (Alles was in T1 & T2 ist, aber nicht mit > T3 assoziiert, soll raus). Sie dauert ein paar Stündchen *gähn* und > legt somit das Echtzeitproblem lahm. okay, nur um sicher zu sein, ein EXPLAIN hast du aber schonmal probiert? und ich vermute mal die ganzen CACHE und Speichereinstellungen wurden schon überprüft? (tmp_table_size, key_cache, sort_buffer, table_cache, ...) > @Sebastian: Das konzeptionelle Problem(?) stammt a) nicht von mir und > b) wird schwierig sein es generell zu ändern. :-( > > MERGE habe ich noch nicht ausprobiert. Werde mich mal belesen. Doch mit > einem nächtlichen Cronjob/Skript muss hoffentlich nicht die DB > runtergefahren nein, ein ganz normales Script welches per SQL alte Daten in die andere Tabelle verschiebt ... > werden, denn sie muss 24/7 einsatzbereit sein. > Ist MERGE eine Liveupdate? Und ginge MERGE auch über mehrere Tabellen? > Wenn ja, könnte man die Replikation ja, über die 7 Tages Tabellen laufen > lassen? MERGE fasst mehrere identische MyISAM Tabellen zu einer zusammen -- Sebastian _______________________________________________ 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