Ubuntu 12.04上のMySQL 5.5.28
結果がgroup_concat_max_len
より長い場合、結果は正常に切り捨てられます。
現在、必要な長さを事前にチェックし、group_concat_max_len
を十分な大きさに設定するスクリプトがあります。
ただし、このチェックでは追加のクエリが追加されます。 group_concat_max_len
を最大値に設定するだけの欠点はありますか?利点は、クエリが少ないことです。
MySQL BOLに従って ここ
64ビットの
group_concat_max_len
の最大値は18446744073709551615
です。&
32ビットの
group_concat_max_len
の最大値は4294967295
です。
結果はgroup_concat_max_len
を含むdefault value of 1024
システム変数で指定された最大長に切り捨てられます。戻り値の有効な最大長はmax_allowed_packet
の値によって制約されますが、値を高く設定できます。 runtime
でgroup_concat_max_len
の値を変更する構文は次のとおりです。ここで、valはunsigned integer
です。
SET [GLOBAL | SESSION] group_concat_max_len = val;
注:GROUP_CONCAT()
関数のbytes
のmaximum permitted
結果の長さ。デフォルトは1024
です。
MySQLが文書化したブログ ここGROUP_CONCAT
を小さなgroup_concat_max_len
設定で使用していますか?結果はsilently truncated
になります(ただし、警告を確認してください)。
@Shlomi Noach
ここgroup_concat_max_len
によるMySQLブログとして:このパラメーターは、GROUP_CONCAT
連結結果のmaximum
テキスト長を制限します。デフォルトは1024
です。これは非常に低い値だと思います。最近、GROUP_CONCAT
を使用して、そうでなければ難しい問題を解決してきました。そして、ほとんどの場合、1024
はtoo low
であり、結果として silent (Argh!)が切り捨てられ、不正な結果が返されました。このパラメータの最大値はmax_packet_size
によって制限されることを知るのは興味深いことです。したがって、このパラメーターは完全に削除し、max_packet_size
としてonly limitation
limitation
を指定することをお勧めします。それ以外の場合は、very large default value
をいくつかの順序でMB
にしたいと思います。
私はこの質問が少し古くなったことに感謝しますが、誰かがそれを見つけて疑問に思っている場合、最大値(またはその他の非常に大きな値)を設定することの1つの欠点は、group_concatがvarcharではなくblobを返すことができることです。提案 elsewhere group_concat_max_lenを512に設定して、常にblobではなくvarcharを返すようにするとします。必要に応じて、charにキャストする傾向があります。