0

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

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

SELECT name,age
FROM users

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

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

当我像上面那样构造连接字符串时,我想压缩它。如果我做:

SELECT COMPRESS('myname');

然后它只是给我输出字符'-' - 有时它甚至返回不可打印的字符。如何让 COMPRESS() 返回可以以 ex 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 回答