Ilja: GROUP BY und nicht aggregierte Spalten

Beitrag lesen

moin,

Nein, was MySQL da macht, ist für mich - auch wenn das Verhalten dokumentiert ist - keine besonders gute Idee.

als ergänzung, wenn ich mich richtig an die dokumentation erinnere, so erlaubt auch mysql es nicht, grundsätlich jede x-beliebige spalte bei der verwendung von GROUP BY mit auszugeben, sondern eben nur die spalten, die innerhalb der gruppierung eindeutig sind.

der hintergrund dafür ist performance, sprich man verspricht sich einen zeitgewinn, indem man nicht noch zusätzlich über spalten gruppiert, wenn die eindeutigkeit schon durch andere spalten gegeben ist. das dbms muss nämlich über jede spalte in der group by klausel sortieren. je mehr spalten dort angegeben werden, desto mehr sortierarbeit.

und dort liegt dann auch das problem, weil mysql sich eben arbeit sparen will, kann es nicht mehr überprüfen, ob die spalten innerhalb der gruppierung eindeutig sind, auch wenn darüber nicht gruppiert wurde, sondern geht davon aus, dass jeder anwender das schon richtig interpretieren wird. das ist aber fatal und erweißt sich in der praxis als nicht tauglich, mal davon abgesehen, dass es stark von den inhalten abhängt.

also, nicht glauben man kann bei mysql jede beliebige spalte mit ausgeben, nur weil es keine fehlermeldung gibt, das ist nämlich falsch.

Ilja