我正试图弄清楚我一直遇到的问题。我的表中只有大约1m的记录,并且大约有~10个连接。
我不会发布查询,因为我认为这不是问题的一部分。基本上,如果没有ORDER BY m0_.id
子句,查询将运行并以0.0056秒的形式返回结果。哪个不错。但是当我添加ORDER BY
时,查询失败并出现以下错误:
#126 - Incorrect key file for table '/tmp/#sql_527_0.MYI'; try to repair it
所以我一直在阅读,显然大多数时候,这个问题与空间有关。但那不可能(可以吗?),因为我有30Gb免费,整个数据库只有200Mb。所以我走得更远,找到了sort_buffer_size
选项。所以我运行SET GLOBAL sort_buffer_size = 18446744073709551615
,apparently是我平台的最大值。果然,运行SHOW VARIABLES LIKE 'sort_buffer%';
会返回
+------------------+----------------------+
| Variable_name | Value |
+------------------+----------------------+
| sort_buffer_size | 18446744073709551615 |
+------------------+----------------------+
1 row in set (0.00 sec)
我甚至尝试将查询限制为1个结果,但没有骰子。
有什么想法吗?
答案 0 :(得分:0)
我认为您最好创建此表的克隆,然后重命名它们:
获取create table query:
SHOW CREATE TABLE table_name;
从(1)步骤更改table_name到table_name_new
将数据从原点复制到新:
INSERT INTO table_name_new VALUES(SELECT * FROM table_name);
尝试使用table_name_new选择
或尝试在不添加ORDER BY的情况下创建重型查询的视图:
CREATE VIEW view_heavy_query AS HERE GOES YOUR HEAVY QUERY WITH JOINS;
然后执行以下查询:
SELECT * FROM view_heavy_query ORDER BY field;