我的情况是,我在 Amazon EC2 实例(MYISAM 表)上的 mysql 中有 35,00,00,000 条记录的表,该实例有 5 列。我需要为特定任务的所有列按功能分组
这就是我如何触发查询 select a,b,c,d,sum(f) as e from table a group by a,b,c,d 其中 a 和 b 是整数列,c,d 是字符串列。我也为这些列编制了索引。我有 18GB 的可用空间。
但是当我使用解释查看查询时
+----+-------------+-------------+------+---------------+------+---------+------+------ ----+---------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+------+---------------+------+---------+------+------ ----+---------------------------------+
| 1 | SIMPLE | TABLE A | ALL | NULL | NULL | NULL | NULL | 35328984 | Using temporary; Using filesort |
+----+-------------+-------------+------+---------------+------+---------+------+----------+---------------------------------+
从概念上,我知道如果列被索引,mysql 将不会使用临时表。但是解释结果告诉我索引没有用于这个查询。此查询运行了几秒钟,并在抛出错误代码 :28 后终止,该代码提到系统空间不足。
如果我错了,请纠正我,我知道临时表需要的空间比可用空间多。这是否意味着我需要额外的空间来解决这个问题?