我正在使用UPDATE通過將m2與n1匹配,在n2中找到相應的值並將其插入到m3中來填充缺少的值(以m3爲單位)。表mmm有250萬行,而表nnn有55,000行。使用MySQL在大型表上運行更新非常慢
以下兩個查詢都可以工作,但問題在於性能。現在,我正以零碎的方式更新嗯。我已經將nnn減少到第一行10,000行。在這種情況下,這個部分查詢完成了我想在7小時後完成的約18%。這種方法的問題是我必須以這種方式進行10次左右的查找。我知道這是很多計算,但我認爲有更好的方法。
有什麼辦法可以加快這個過程嗎?我很欣賞這些反饋。
查詢#1
UPDATE mmm, nnn
SET mmm.m3 = nnn.n2
WHERE mmm.m2 = nnn.n1
查詢#2
UPDATE mmm a
INNER JOIN nnn b
ON b.n1 = a.m2
SET a.m3 = b.n2
WHERE b.n1 = a.m2
表MMM(僅組合是唯一的)
m1 m2 m3
0002-1962 0025117388
0002-1962 14644418453
0003-2417 0026708363
表NNN(n1是唯一的)
n1 n2
0025117388 1111-2222
14644418453 1515-2323
0026708363 1515-2323
數據庫結構:
CREATE TABLE `mmm` (
`m1` char(9) NOT NULL DEFAULT '',
`m2` varchar(11) NOT NULL DEFAULT '',
`m3` char(9) NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `nnn` (
`n1` varchar(11) NOT NULL DEFAULT '',
`n2` char(9) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8
查詢#1 /#2執行後通常會更新多少條記錄? –