次の構造を持つ次の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