Ich optimiere eine Abfrage, die eine UNION ALL
von zwei Abfragen enthält. Beide Abfragen wurden mehr als optimiert und laufen mit weniger als einer Sekunde getrennt. Wenn ich jedoch die Vereinigung von beiden führe, dauert es ungefähr 30 Sekunden, um alles zu berechnen.Wie verbessert man die MySQL-Performance auf UNION ALL?
Ich will nicht, dass Sie mit der spezifischen Abfrage stören, da sie optimiert sind, wie sie bekommen, also nennen wir sie Optimized_Query_1
und Optimized_Query_2
Anzahl der Zeilen aus Optimized_Query_1 ist etwa 100K
Anzahl der von Optimized_Query_2 Reihen ist etwa 200K
SELECT * FROM (
Optimized_Query_1
UNION ALL
Optimized_Query_2
) U
ORDER BY START_TIME ASC
ich für teh resu benötigen Es ist in Ordnung, aber ich finde, dass mit oder ohne die ORDER BY am Ende die Abfrage so viel Zeit braucht, so sollte keinen Unterschied machen.
Offenbar erstellt die UNION ALL eine temporäre Tabelle im Speicher, aus der dann die Endergebnisse hervorgehen, gibt es eine Möglichkeit, dies zu umgehen?
Dank
Wenn ich die ORDER BY die Gesamtzeit entfernen, um die Abfrage zu berechnen, dauert genauso viel Zeit. Wie würde eine VIEW-Hilfe erstellt? – jonasMcFerreira
@jonasMcFerreira Werfen Sie einen Blick auf [diese Diskussion] (http://dev.mysql.com/doc/refman/5.5/en/create-view.html#c9063) – Kermit