Eaten by a Grue Asked: 2020-05-14 23:12:30 +0800 CST2020-05-14 23:12:30 +0800 CST 2020-05-14 23:12:30 +0800 CST 排序内存不足,升级到 MySQL 8 后考虑增加服务器排序缓冲区大小 772 我最近将服务器从 5.7.30 升级到 MySQL 8.0.20,并在过去从未出现过的查询中遇到此错误。它似乎与包含有关,SQL_CALC_FOUND_ROWS因为一旦删除错误就会消失。我已经增加sort_buffer_size了,现在看起来一切都很好,但我想知道为什么这会在 MySQL 8 上突然发生? 如果需要,我可以提供有关所涉及的特定查询和架构的更多详细信息,但我的问题更多的是笼统的“版本 8 中是否发生了会导致这种情况的更改”? mysql mysql-8.0 1 个回答 Voted Best Answer JYOTI RAJAI 2020-05-15T01:00:36+08:002020-05-15T01:00:36+08:00 [> SQL_CALC_FOUND_ROWS 查询修饰符和随附的 FOUND_ROWS() 从 MySQL 8.0.17 开始不推荐使用该函数,并将在未来的 MySQL 版本中删除。作为替代,考虑使用 LIMIT 执行您的查询,然后使用 COUNT(*) 且没有 LIMIT 的第二个查询来确定是否还有其他行。例如,代替这些查询: SELECT FOUND_ROWS(); 请改用这些查询: SELECT * FROM tbl_name WHERE id > 100 LIMIT 10; SELECT COUNT(*) FROM tbl_name WHERE id > 100; COUNT(*) 受到某些优化。SQL_CALC_FOUND_ROWS 导致某些优化被禁用。] 1
[> SQL_CALC_FOUND_ROWS 查询修饰符和随附的 FOUND_ROWS()