【发布时间】:2012-12-09 21:36:27
【问题描述】:
当我运行这个查询时,它似乎从来没有做任何事情,cpu 使用率上升到 ~30% 并保持在那里,最终 mysql 工作台超时。有没有办法更有效地做到这一点?
insert ignore into tbl_sub_model_image
select sub_model_sk,tbl_image.image_id
from tbl_sub_model sm
inner join autotalk_identicar_old.ad_vehicle av on av.vehiclekey=sm.oldid
inner join autotalk_identicar_old.id_ad_link al on av.vehiclekey=al.rbvehiclekey
inner join autotalk_identicar_old.id_features f on f.vehiclekey=al.idvehiclekey
inner join autotalk_identicar_old.id_images i on i.id_vehiclekey=f.vehiclekey
inner join tbl_image im on i.id_images.image=im.img_lnk
where substring(id_images.image,-4) <> '.tif';
基本上在旧数据库中,ad_vehicle 中的一条记录链接到 id_ad_link 中的一条(?)。 id_ad_link 中的许多都与 id_features 中的一个相关联,并且 id_features 和 id_images 是一一对应的。 在 tbl_sub_model(在新数据库中)中,我有一个名为 oldid 的字段,它是 ad_vehicle 的主键。
我想要做的是,我有一个 tbl_image 但图像已分配新的自动编号,所以我需要将旧数据库连接在一起以找出我需要将哪些图像分配给新的子模型通过使用他们的文件路径。
所有表都没有超过 60,000 条记录,但它似乎永远无法执行,奇怪的是在过去的几个月里,我一直在另一个虚拟机上很好地执行它,但现在一个新的它只是行不通。它要么陷入循环,要么永远持续下去。
有人可以帮我修复/改进它吗?
【问题讨论】:
-
假设两个虚拟机同样强大,您应该检查定义,尤其是旧(快速运行)环境中表的索引,并将其与新环境进行比较。
标签: mysql select insert query-optimization