gpt4 book ai didi

mysql - 使用来自另一个表的 MAX() 和 MIN() 更新表 + 性能问题

转载 作者:行者123 更新时间:2023-11-30 23:11:57 25 4
gpt4 key购买 nike

我有一个问题,过去 2 天我一直试图解决,我有 2 个表,workspatxtractor_wrkxtractor_wrk 包含 250000 行,workspat 包含 6700 万行。

CREATE TABLE `xtractor_wrk` (
`db_time` datetime DEFAULT NULL,
`db_position` point NOT NULL,
`db_namn` char(50) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL,
`db_sis` mediumint(8) unsigned DEFAULT NULL,
`db_om` smallint(5) unsigned DEFAULT NULL,
`db_seq` char(50) DEFAULT NULL,
`db_grarri` datetime DEFAULT NULL,
`db_grtime` datetime DEFAULT NULL,
KEY `db_time` (`db_time`),
KEY `db_sis` (`db_sis`),
KEY `db_om` (`db_om`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC

CREATE TABLE `workspat` (
`db_time` datetime NOT NULL,
`db_point` point NOT NULL,
`db_om` smallint(6) NOT NULL,
`db_sis` mediumint(8) NOT NULL,
`db_status` char(10) CHARACTER SET latin1 NOT NULL,
KEY `db_sis` (`db_sis`),
KEY `db_om` (`db_om`),
KEY `db_time` (`db_time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci

我有两个问题:

我想做的是用 MAX(workspat.db_time) 更新我的表 xtractor_wrk和 MIN(workspat.db_time) 我将从下面的“ON”得到的结果。

我已经尝试了很多东西,但唯一觉得我有点工作的是:

UPDATE xtractor_wrk 
JOIN workspat
ON date(xtractor_wrk.db_time) = date(workspat.db_time)
and xtractor_wrk.db_om = workspat.db_om
and xtractor_wrk.db_sis = workspat.db_sis
SET xtractor_wrk.db_grtime = workspat.db_time

当然,这并没有给我 xtractor_wrk 的 MAX 和 MIN 更新,只是这个是唯一对我来说远程工作的东西。

workspat.db_time 可以有任意数量的匹配,我想要最高和最低并将它们写入 xtractor_wrk.db_grtimextractor_wrk.db_grarri

我也有速度方面的问题,我试过索引但它仍然很慢,有没有办法跨表索引或者我的问题是所有更新?我可以将结果写入新表而不是更新或延迟更新,因为它有 250000 行要更新吗?我该怎么做?

最佳答案

仅尝试建议

添加新列以指示是否已更新,如 1(如果已更新)和 0(如果未更新)并添加 where 子句以加快更新速度。

例子:

column 1 column 2 column 3 ... Updated
0
1
0
0
1

关于mysql - 使用来自另一个表的 MAX() 和 MIN() 更新表 + 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19465199/

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