我知道之前已经问过这个问题,但是到目前为止我找不到答案后仍无法解决我的问题。我真的很沮丧所以我试着再次问这里。
我有一个包含7600万行(newpaper_type1_ACD
)的表格,我想加入另一个包含大约700万行(bigdatasetauthorseparated
)的表格。
查询如下:
insert into newpaper_type1_ADE
(paperkeyA, paperkeyD, authorE)
select a.paperkeyA, a.paperkeyD, b.author
from newpaper_type1_ACD_notempty a
left join bigdatasetauthorseparated b
on a.paperkeyD = b.paperkey
order by b.paperkey, b.author;
paperkey
已编入索引。
我之前尝试过执行相同的查询,但是在较小的数据中并且它有效。但现在它总是在3800秒后停止。
我也尝试改变它,但它不起作用:
set global tmp_table_size = 134217728;
set global max_heap_table_size = 134217728;
我注意到mysql在C:/windows/temp
中默认使用临时表。我尝试将TEMP
中的TMP
和environmental variable setting
的路径更改为另一个硬盘驱动器,但它也无法正常工作。
我的C盘有201GB
个可用空间。我的E和F驱动器有大约9TB
个可用空间。我的操作系统是Windows Server 2012。
有些文章说我应该更改my.cnf
文件并更改tmpdir
位置但我找不到此文件。我有my.ini
个文件,但我没有在里面看到任何tmpdir
变量。
任何帮助都会非常感激。谢谢。
修改:
即使我已将Windows环境变量设置更改为另一个硬盘驱动器(F:/temp
),当我使用以下命令检查MySQL命令提示符时:
show variables like 'tmpdir';
tmpdir
仍然分配给C:/Windows/Temp
。谁能告诉我如何更改MySQL内的tmpdir
?