MySQL 5.5.28 unter Ubuntu 12.04
Wenn das Ergebnis länger als group_concat_max_len
ist, wird das Ergebnis grazil abgeschnitten.
Derzeit habe ich ein Skript, das versucht, die erforderliche Länge im Voraus zu überprüfen, und das so eingestellt ist group_concat_max_len
, dass es groß genug ist.
Durch die Überprüfung werden jedoch zusätzliche Abfragen hinzugefügt. Gibt es einen Nachteil, wenn Sie nur group_concat_max_len
den Maximalwert einstellen ? Der Vorteil ist weniger Anfragen.
mysql
group-concatenation
Buttle Butkus
quelle
quelle
Antworten:
Gemäß MySQL BOL hier
Das Ergebnis wird auf die maximale Länge gekürzt, die von der
group_concat_max_len
Systemvariablen mit a angegeben wirddefault value of 1024
. Der Wert kann höher eingestellt werden, obwohl die effektive maximale Länge des Rückgabewerts durch den Wert von begrenzt istmax_allowed_packet
. Die Syntax zum Ändern des Werts vongroup_concat_max_len
atruntime
lautet wie folgt: val ist einunsigned integer
:Hinweis: Die
maximum permitted
Ergebnislängebytes
für dieGROUP_CONCAT()
Funktion. Der Standardwert ist1024
.Wie MySQL Blog hier dokumentiert Mit
GROUP_CONCAT
einer kleinengroup_concat_max_len
Einstellung? Ihr Ergebnis wird seinsilently truncated
(überprüfen Sie jedoch unbedingt die Warnungen).Als MySQL-Blog von Here : Dieser Parameter begrenzt die Textlänge eines Verkettungsergebnisses. Der Standardwert ist . Ich denke, das ist ein sehr niedriger Wert. Ich habe in letzter Zeit immer mehr verwendet, um ansonsten schwierige Probleme zu lösen. Und in den meisten Fällen war es gerecht , was zu einem stillen (Argh!) Abschneiden des Ergebnisses führte, wodurch falsche Ergebnisse zurückgegeben wurden. Es ist interessant zu erfahren, dass der Maximalwert für diesen Parameter durch begrenzt ist . Ich würde dann vorschlagen, dass dieser Parameter insgesamt entfernt werden sollte und das als . Ansonsten hätte ich gerne eine in der Größenordnung von ein paar .
@Shlomi Noach
group_concat_max_len
maximum
GROUP_CONCAT
1024
GROUP_CONCAT
1024
too low
max_packet_size
max_packet_size
limitation
only limitation
very large default value
MB
Für weitere Ihre ref Here & Here
quelle
Ich weiß, dass diese Frage jetzt etwas alt ist, aber falls jemand sie findet und sich wundert, besteht ein Nachteil beim Festlegen des maximalen (oder ansonsten sehr großen) Werts darin, dass group_concat eher einen Blob als einen varchar zurückgeben kann. An anderer Stelle wird vorgeschlagen , group_concat_max_len auf 512 zu setzen, damit immer ein varchar anstelle eines Blobs zurückgegeben wird. Ich neige dazu, es nur zu char zu werfen, wo es nötig ist.
quelle