Jestem optymalizacji kwerendy, która obejmuje UNION ALL
dwóch kwerend. Oba zapytania zostały zoptymalizowane i działają z dokładnością do jednej sekundy osobno. Jednak, gdy wykonuję połączenie obu, obliczenie wszystkiego zajmuje około 30 sekund.Jak poprawić wydajność MYSQL na UNION ALL?
I nie przeszkadza Ci konkretnego zapytania, ponieważ są one zoptymalizowane jak oni dostać, więc nazwijmy je Optimized_Query_1
i Optimized_Query_2
Liczba wierszy z Optimized_Query_1 wynosi około 100K
Ilość wiersze z Optimized_Query_2 wynosi około 200K
SELECT * FROM (
Optimized_Query_1
UNION ALL
Optimized_Query_2
) U
ORDER BY START_TIME ASC
I wymagają dla teh resu Będziemy w porządku, ale stwierdzam, że z ORDER BY lub bez na końcu zapytanie zajmuje tyle czasu, więc nie powinno sprawić żadnej różnicy.
Wygląda na to, że UNION ALL tworzy tymczasowy stół w pamięci, skąd ostateczne wyniki są podawane, czy istnieje sposób obejścia tego?
Dzięki
Po usunięciu ZAMÓWIENIA przez łączny czas obliczenia zapytania zajmuje tyle samo czasu. W jaki sposób tworzenie pomocy VIEW? – jonasMcFerreira
@jonasMcFerreira Spójrz na [tę dyskusję] (http://dev.mysql.com/doc/refman/5.5/en/create-view.html#c9063) – Kermit