0

サーバーとクライアント間で可能な限り最小限のデータを転送することが重要です。したがって、mysql Compress()関数を使用することを考えました。最大圧縮を取得するには、すべての結果を1つの大きな文字列(またはMySqlで許可されている最大長のいくつか)に連結して、同様の結果を圧縮できるようにしてから、これら/その文字列を圧縮します。

最初の問題(mysqlの結果を連結する):

SELECT name,age
FROM users

10件の結果を返します。これらすべての結果を、名前、年齢、名前、年齢、名前、年齢などの形式で1つの要素に連結したいと思います。これは可能ですか?

2番目の問題(上記の結果を圧縮する)

上記のように連結文字列を作成したら、圧縮します。私が行った場合:

SELECT COMPRESS('myname');

次に、出力として文字「-」が返されるだけです。印刷できない文字が返されることもあります。COMPRESS()に、元のASCIIエンコーディングで転送できる圧縮された印刷可能な文字列を返すにはどうすればよいですか?

4

2 に答える 2

5

使用しているクライアントライブラリによっては(すべてのライブラリがサポートしているわけではありません)、MySQL圧縮プロトコルを使用できますか?

ここにそれについてのいくつかのリンクがあります:

于 2010-05-02T15:51:55.837 に答える
4
  1. 内部で文字列を作成して返す可能性のあるストアドプロシージャを調査することをお勧めします。その性質上、MySQLは「垂直」クエリ結果を「水平」クエリ結果に変換しません。これはリレーショナルDBMSの目的ではありません。それは表示の問題です。唯一の例外はgroup_concat()、グループ化を使用して何らかの結合クエリを実行している場合に使用することです。

  2. COMPRESS()バイナリ文字列を返すので、印刷できない文字が表示されることがあるのは当然です。「読み取り可能な」ものを返すことを意図したものではありません。また、圧縮されていない文字列の長さを表すために、圧縮された文字列に4バイトが追加されるため、5バイト以下に圧縮しても何も節約できません。

于 2010-05-03T05:18:10.270 に答える