gpt4 book ai didi

MySQL - 使用 Join 进行更新突然需要很长时间

转载 作者:行者123 更新时间:2023-11-29 20:57:06 26 4
gpt4 key购买 nike

我有一个主表MainTable。大约有 450 万行。这是它的创建查询:

create table MainTable(
status_day date DEFAULT NULL,
i_station_id int DEFAULT NULL,
i_TZ int DEFAULT NULL,
CID int DEFAULT NULL,
Calc1 double DEFAULT NULL,
Calc2 double DEFAULT NULL,
...
Calc80 double DEFAULT NULL,
UNIQUE KEY uniqueindex (status_day, i_station_id, i_TZ, CID)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

我需要使用另一个 TEMP 表中的值更新多个字段。它有大约 760K 行,它的创建语句:

create temporary table TEMP (
status_day date DEFAULT NULL,
i_station_id int DEFAULT NULL,
i_TZ int DEFAULT NULL,
CID int DEFAULT NULL,,
Calc13 double DEFAULT NULL,
Calc14 double DEFAULT NULL,
Calc17 double DEFAULT NULL,
Calc24 double DEFAULT NULL,
Calc68 double DEFAULT NULL,
Calc70 double DEFAULT NULL,
UNIQUE KEY indexxx (status_day, i_station_id, i_TZ, CID)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

出于某种原因,此更新查询:

大约需要 3 小时。那有意义吗?对我来说似乎太长了。

update MainTable as A join TEMP as B on
(A.status_day = B.status_day and
A.i_station_id = B.i_station_id and
A.i_TZ = B.i_TZ and
A.CID = B.CID)
set
A.Calc13 = B.Calc13,
A.Calc14 = B.Calc14,
A.Calc17 = B.Calc17,
A.Calc24 = B.Calc24,
A.Calc68 = B.Calc68,
A.Calc70 = B.Calc70

这是结果

Explain select 
*
from MainTable as a join TEMP as b on
(a.status_day = b.status_day and
a.i_station_id = b.i_station_id and
a.i_TZ = b.i_TZ and
a.CID = b.CID)




ID select_type table type possible_keys key key_len rows
1 SIMPLE b ALL indexxx 692967
1 SIMPLE a ref uniqueindex uniqueindex 23 1

有什么想法吗?

谢谢? :)

更新:答案:增加服务器的内存和CPU立即解决了这个问题。

最佳答案

我不太确定为什么查询花了 3 小时,这太荒谬了。也许您要加入的列有问题,但您也可以进行如下查询:

UPDATE MainTable A, TEMP B
SET
Calc13 = B.Calc13,
Calc14 = B.Calc14,
Calc17 = B.Calc17,
Calc24 = B.Calc24,
Calc68 = B.Calc68,
Calc70 = B.Calc70
WHERE
A.status_day = B.status_day
AND A.i_station_id = B.i_station_id
AND A.i_TZ = B.i_TZ
AND A.CID = B.CID

关于MySQL - 使用 Join 进行更新突然需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com