CM am :
ich würde mal behaupten das hier das Design der Tabellen schon für'n Arsch ist. Warum hat man nicht a,b,.. in eine Tabelle gepackt und dann ausgelesen?
Dann brauch man auch kein UNION...
Mittwoch, 2. April 2008MySQL Query TuningTrackbacks
Trackback-URL für diesen Eintrag
Kommentare
Ansicht der Kommentare:
(Linear | Verschachtelt)
CM am :
hust from a,b,c,d....
ich würde mal behaupten das hier das Design der Tabellen schon für'n Arsch ist. Warum hat man nicht a,b,.. in eine Tabelle gepackt und dann ausgelesen? Dann brauch man auch kein UNION... Christian Boltz am :
Naja, wie das eben so ist bei Kundendaten und "gewachsenen" Datenbankstrukturen ;-) Auch die ursprüngliche, lahme Query ist übrigens nicht auf meinem Mist gewachsen.
Kurzfassung: Die Tabellen b,c,d haben einige wenige Spalten mit identischer Bedeutung (und genau die werden für diese Query gebraucht), der große Rest ist sehr unterschiedlich. Daher kann man nicht so einfach alles zu einer einzigen Tabelle zusammenfassen :-( Ja, die Datenbankstruktur könnte man definitiv verbessern - aber das ist in diesem Fall nicht wirklich meine Baustelle... nighthawk am :
wenn aus < 1.000 zeilen in vier tabellen ca. 15.000 ergebnisdatensaetze entstehen, riecht das ganz stark nach einem cross join. haette man statt "(a.id = b.id OR a.id = c.id OR a.id = d.id)" einfach "left join"s verwendet, waere man vermutlich aehnlich schnell zum selben ergebnis gekommen - und haette beim spaeteren pflegen der applikation weniger verstaendnisprobleme.
abgesehen von all dem staune ich, dass mysql bei unions unterschiedlich benannte ergebnisspaltensaetze zulaesst... unter postgresql ginge das nicht. |