update CARS_LOOKUP
INNER JOIN wheels_log ON CARS_LOOKUP.NoOfWheels= wheels_log.NoOfWheels
set CARS_LOOKUP.model= wheels_log.model
我正在尝试基于联接更新表中的列。但是mysql将进入锁定等待超时。无法更改my.ini或设置全局超时。我在5.0.80版本,所以不能做解释
车辆查找=20万行,
车轮日志=5万行
在mysql中优化上述查询的最佳方法是什么。
update CARS_LOOKUP
INNER JOIN wheels_log ON CARS_LOOKUP.NoOfWheels= wheels_log.NoOfWheels
set CARS_LOOKUP.model= wheels_log.model
我正在尝试基于联接更新表中的列。但是mysql将进入锁定等待超时。无法更改my.ini或设置全局超时。我在5.0.80版本,所以不能做解释
车辆查找=20万行,
车轮日志=5万行
在mysql中优化上述查询的最佳方法是什么。
2条答案
按热度按时间798qvoo81#
方案a:
如果这是一次性任务:
方案b:
5.0在某些方面没有合理的违约。提供这些信息以供进一步分析:
方案c:
穿行
CARS_LOOKUP
一次一千排。更多细节在这里。方案d:
你真的需要好好想想。很难再找到一个能为福特t型车服务的人了。
升级5.0->5.1->5.5->5.6->5.7->8.0——你的几个版本已经过时了!实际上,5.0.80才9岁。但那可能是5.0(寿命结束)的eol发生的时间。
xcitsw882#
对于此查询:
你想要索引吗
wheels_log(NoOfWheels, model)
.也就是说,我不明白为什么你的版本会超时,除非你的表真的很大。一种可能性是
wheels_log
实际上有许多行具有相同的NoOfWheels
. 您可以将其检查为:如果存在这样的重复项,它们可能会对性能产生很大影响。你需要决定你想要哪种型号。