为什么 GROUP_CONCAT + DISTINCT 在某些服务器上触发内存不足(需要 8388580 字节)?

Why does GROUP_CONCAT + DISTINCT triggers a Out of memory (Needed 8388580 bytes) on some servers?

我的实时服务器似乎不喜欢 GROUP_CONCAT + DISTINCT 组合。

这是一个测试查询

SELECT
GROUP_CONCAT(DISTINCT id SEPARATOR ',') AS ids
FROM site_content
WHERE  type = 'document'

相同的查询在我的本地主机 (AMPPS) 上似乎没问题,但在实时服务器上却不行 运行ning php 5.2/5.3 软件版本:5.1.40-community-log - MySQL 社区服务器 (GPL)

此 mysql 版本不支持 DISTINCT 还是有其他问题?

如果我删除 DISTINCT,一切似乎都很好,但在某些情况下,逗号分隔列表中的值可能是重复的。我可以使用 DISTINCT 删除重复项,也可以稍后使用 php 的 array_unique,这并不理想。

谢谢

更新

我创建了一个包含 4 个条目的测试 table

CREATE TABLE IF NOT EXISTS `a_table` (
  `anId` int(11) NOT NULL,
  `anotherId` int(11) NOT NULL,
  PRIMARY KEY (`anId`,`anotherId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

table 中的数据是 1:2 1:3 1:4 2:1

运行 在 phpMyAdmin 中的查询(但同样的事情发生在代码中)

SELECT
GROUP_CONCAT(DISTINCT anotherId SEPARATOR ',') AS ids
FROM a_table
WHERE  anId = 1

错误是

5 - 内存不足(需要 8388580 字节)

mysqld 需要重新启动。可能是因为错误的查询而卡住了。

谢谢