【问题标题】:Minimizing MySQL output with Compress() and by concatening results?使用 Compress() 并通过连接结果来最小化 MySQL 输出?
【发布时间】:2010-05-02 15:40:20
【问题描述】:

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

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

SELECT name,age
FROM users

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

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

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

SELECT COMPRESS('myname');

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

【问题讨论】:

  • 对于只有 10 个结果的查询,压缩字符串不太可能比原始字符串小很多。
  • 以上只是一个例子。实际查询要大得多。

标签: mysql compression minimize


【解决方案1】:

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

这里有几个关于它的链接:

【讨论】:

    【解决方案2】:
    1. 您可能想要调查一个存储过程,它可以在内部构建一个字符串并返回它。就其本质而言,MySQL 不会为您将“垂直”查询结果转换为“水平”查询结果,这不是关系 DBMS 的用途。这更像是一个显示问题。唯一的例外是使用group_concat(),如果您正在使用分组进行某种连接查询。

    2. COMPRESS() 返回一个二进制字符串,因此您偶尔会收到不可打印的字符也就不足为奇了——它不是为了返回“可读”的东西。同样,它会在压缩字符串中添加 4 个字节来表示未压缩字符串的长度,因此压缩 5 个字节或更少不会为您节省任何费用。

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多