使用Compress()和串联结果最小化MySQL输出?

时间:2010-05-02 15:40:20

标签: mysql compression minimize

在服务器和客户端之间传输尽可能少的数据至关重要。因此我想到了使用mysql的Compress()函数。为了获得最大压缩,我还希望将所有结果连接成一个大字符串(或MySql允许的几个最大长度),以允许压缩类似的结果,然后压缩这些/那个字符串。

第一个问题(连接mysql结果):

SELECT name,age
FROM users

返回10个结果。我想在表单上的一个strign中连接所有这些结果: 姓名,年龄,姓名,年龄,姓名,年龄......等等。这可能吗?

第二个问题(压缩上面的结果)

当我按照上面的方法编写连接字符串时,我想压缩它。如果我这样做:

SELECT COMPRESS('myname');

然后它只是给我输出字符' - ' - 有时甚至会返回不可打印的字符。如何让COMPRESS()返回一个压缩的可打印字符串,我可以用ex ASCII编码进行转换?

2 个答案:

答案 0 :(得分:5)

根据您使用的客户端库(并非所有库都支持它),也许您可​​以使用MySQL压缩协议?

以下是一些关于它的链接:

答案 1 :(得分:3)

  1. 您可能希望研究一个可以在内部构建字符串并返回该字符串的存储过程。从本质上讲,MySQL不会将“垂直”查询结果转换为“横向”查询结果,这不是关系型DBMS的用途。这更像是一个显示问题。如果您正在使用分组进行某种连接查询,则唯一的例外是使用group_concat()

  2. COMPRESS()返回一个二进制字符串,因此您偶尔会得到不可打印的字符也就不足为奇了 - 它并不打算返回“可读”的内容。同样,它将4个字节添加到压缩字符串中以表示未压缩字符串的长度,因此压缩5个字节或更少不会为您节省任何内容。