2013-05-08 16 views
5

Gibt es eine Möglichkeit, im Voraus (nicht durch Versuch und Irrtum) herauszufinden, ob eine bestimmte Abfrage GROUP BY oder GROUP EACH BY verwenden soll? Wir haben derzeit gesehen, dass wir nach einer Kardinalität von ~ 60-70% gebeten werden, Group EACH by zu verwenden. Es ist schwer vorherzusagen, wie wir das SQL generieren.Gruppe nach Gruppe im Voraus identifizieren

Antwort

4

Die Verwendung von 'EACH' hängt nicht von der Abfrage, sondern von den Daten ab. Gibt es eine kleine Anzahl eindeutiger Werte für den Gruppenausdruck? Verwenden Sie GROUP BY. Gibt es viel? Verwenden Sie GROUP EACH BY.

Die beste Strategie ist die Verwendung von GROUP BY, bis Sie einen "Über-Limit-Fehler" erhalten.

Um tiefer in das "Warum?" Zu gehen, können Sie sich das Dremel-Papier ansehen, mit dem alles begann. Grundsätzlich läuft GROUP BY in den Mixern, während GROUP EACH BY auf die Shards geschoben wird.

Für andere Einblicke, überprüfen Sie jcondit Antworten bei Resources Exceeded during query execution.

+0

danke, aber wir können nicht Benutzer Abfragen nur "Fehler bekommen" und dann wieder ausführen :-). – user1516770

+0

Ich stimme zu! Kannst du mir mehr über den Anwendungsfall erzählen? –