【发布时间】:2021-03-23 14:15:06
【问题描述】:
我主要处理 SQL 服务器 TSQL。我的任务是将 TSQL sproc 转换为 MySQL sproc。在 TSQL 中,以下小更新需要不到一秒钟的时间。 MySQL 中的相同更新需要 20 分钟或更长时间。
UPDATE MyTempTable
INNER JOIN ZipCode on ZipCode.SourceZip = pSourceZip
AND ZipCode.DestZip = pDestZip
SET
CT = ZipCode.GD
WHERE
ZipCode.Updated >= DATE_ADD(CURDATE(), INTERVAL -365 DAY);
pSourceZip 和 pDestZip 是存储过程的参数。临时表中有 2 行。邮政编码中有 35,992,342。 ZipCode 在SourceZip 和DestZip 上有一个索引。我可以运行以下简单的选择并立即返回。 select * from ZipCode where SourceZip = pSourceZip and DestZip = pDestZip;我在更新中遗漏了什么?
【问题讨论】:
-
对更新做一个解释,你就会看到瓶颈在哪里。
-
@Shadow 确实有帮助,谢谢!发布我自己的答案以帮助遇到此类问题的任何人。
-
您可以向临时表添加索引,然后检查您的解释计划是否存在性能瓶颈
标签: mysql sql-update