更新查询出现问题,耗时超过20分钟(之后我会终止它)。
场景:
表一有大约30万条记录。
表二包含相同的记录集(复制),但有一个额外的字段,该字段需要包含与多个字段匹配的记录的id,并且具有另一个字段中的最高值(分数)。为了澄清,最终结果应该是包含300K条记录的表二,每条记录都具有具有相同基本属性集的另一条记录的id,以及具有这些属性的记录集中的最高分数。
当我只将2K条记录而不是完整的300k条记录复制到表2中时,以下操作将在大约5秒内完成。
UPDATE vtable2 v1 SET v1.buddy = (
SELECT v2.id FROM vtable1 v2
WHERE
v2.group_id = v1.group_id AND
// 6 more basic comparisons
ORDER BY score DESC LIMIT 1
)
我需要为全部30万张唱片找到伙伴。参与联接和排序的所有字段都有索引。
非常感谢您的帮助。