次の構造を持つ次の2つのmysql(Xおよびモード)テーブルがあります
table X
`time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`op_mode` varchar(200) NOT NULL,
`value` double NOT NULL,
`processed` int(11) NOT NULL DEFAULT '0',
KEY `time` (`time`),
KEY `processed` (`processed`)
table mode
`time_from` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`time_to` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`op_mode` varchar(500) CHARACTER SET utf16 COLLATE utf16_bin NOT NULL
テーブルX
には約 1M 行が含まれます。次のクエリを使用してテーブルのop_mode
列を更新する C# デスクトップ アプリを作成しました。X
UPDATE X, mode
SET X.op_mode = mode.op_mode,
processed = 1
WHERE (X.TIME BETWEEN mode.time_from
AND mode.time_to
) AND processed = 0
ただし、更新プロセスには非常に長い時間がかかります。
更新プロセスを強化するための提案はありますか?
processed
フラグとして使用される表の列X
(最初は に設定され、行が更新される0
と に設定されます)1