Ilja: GROUP BY und nicht aggregierte Spalten

Beitrag lesen

moin,

Was meinst du hier mit eindeutig?
Man kann die Spalten angeben, die man angeben will - und erhält ein Ergebnis.

du hättest den link weiter gehen sollen, dort steht: "When using this feature, all rows in each group should have the same values for the columns that are ommitted from the GROUP BY part."

http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html

Mit Performance meinst du hier Performance beim *Schreiben* von Queries, in dem man auf Gruppierungen verzichtet?
Wenn man damit leben kann, für solche Spalten wie von Vinzenz erwähnt einen „zufälligen“ Wert zu erhalten, dann kann man das machen.

nein, das macht nicht wirklich sinn, zufällige werte zu erhalten. um zu wissen, warum man dadurch performance gewinnen kann, muss man wissen, wie das dbms gruppierungen umsetzt. letzlich werden gruppierungen durch eine sortierung ausgeführt, und zwar über jeden spalte in der GROUP BY klausel. nach der sortierung kann das dbms die gruppenwechsel erkennen und entsprechend handeln. manchmal will man dabei spalten ausgeben, die aber keine veränderung bei der sortierung ergeben würden, sprich die gruppen wären immer noch die gleichen, zum beispiel man gruppiert über einen primary key und gibt noch andere spalte aus der tabelle aus. die gruppierung würde sich nie verändern, das dbms müsste aber trotzdem für jede spalte die sortierung durchführen. deswegen kamen die entwickelr von mysql auf diese idee, diese spalten wegzulassen, aber auch nur diese.

Ilja