为什么 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 需要重新启动。可能是因为错误的查询而卡住了。
谢谢
我的实时服务器似乎不喜欢 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 需要重新启动。可能是因为错误的查询而卡住了。
谢谢