【发布时间】:2026-02-09 17:10:01
【问题描述】:
我有一个更新脚本,每晚都会更新我的数据库。
这是一个小型数据库,大约 10k 项。 每个表的更新速度很快,但只有一个。在连接表上非常慢。
连接表是Item表和Type表之间的链接,如下所示:
Item.Code <-> JoinTable.RefCode (VARCHAR 30), JoinTable.IdType(int 11) <-> Type.id
引擎是 InnoDB。引用表上有两个外键,两列上有一个唯一键。此外,每列上的索引以允许外键。
我正在使用以下 SQL 查询来更新表:
INSERT INTO JoinTable (id, RefCode, IdType)
VALUES ( NULL, "AAA", 9584 )
ON DUPLICATE KEY UPDATE
id = LAST_INSERTED_ID(id),
refCode = values(refCode),
refType = values(refType)
因此,对于 15k 引用的 id,它运行大约 30 分钟的主要问题。
当我使用 MyISAM 引擎时,大约需要 2 秒。但没有更多的外键。
我了解 MyISAM 删除外键并且速度更快,但我认为对于这么小的数据库来说 30 分钟是很不正常的。
你能帮我提高性能吗?
【问题讨论】:
标签: mysql sql performance sql-update innodb