[英]MySQL update in join query executes very slow
我有两个表,分别是xp_pn_resale
和xp_guru_properties
。 我想从xp_pn_resale
更新postal_code
列,但数据来自xp_guru_properties
并且它在一个 json 对象中,所以我需要提取。 我试图编写一个查询,但它没有响应或没有任何输出。 有谁知道是什么问题? 谢谢
这是我的选择查询以供参考和测试
select r.block, r.street_name,
r.postal_code, p.property_name,
r.property_name as resale_property_name,
JSON_UNQUOTE(JSON_EXTRACT(p.json, '$.postcode') )as postcode
from xp_pn_resale AS r
JOIN xp_guru_properties AS p
ON r.property_name = p.property_name where r.postal_code is null
limit 10
我只希望postcode
是查询中postal_code
的值,我只是将限制设置为 10,因为当我不做限制时会花费太多时间
另外这里是我的更新声明
UPDATE xp_pn_resale AS r
JOIN xp_guru_properties AS p ON r.property_name = p.property_name
SET r.postal_code = JSON_UNQUOTE(JSON_EXTRACT(p.json, '$.postcode'))
where r.property_name = p.property_name
上面的查询没有做任何事情,它一直在执行。 我不知道我写的查询有什么问题
我在800K数据xp_pn_resale
和30K xp_guru_properties
首先,您的查询不需要WHERE
子句,因此:
UPDATE xp_pn_resale r JOIN
xp_guru_properties p
ON r.property_name = p.property_name
SET r.postal_code = JSON_UNQUOTE(JSON_EXTRACT(p.json, '$.postcode'));
我可能会怀疑两件事之一。 第一个是xp_guru_properties(property_name)
上的索引。 这对性能很重要。
第二个是单个属性的属性表中有多个匹配项。 那真的会减慢速度。
试试这个查询
UPDATE xp_pn_resale
INNER JOIN xp_guru_properties
ON xp_pn_resale.property_name = xp_guru_properties.property_name
SET xp_pn_resale.postal_code = JSON_UNQUOTE(JSON_EXTRACT(xp_guru_properties.json, '$.postcode'))
WHERE xp_pn_resale.postal_code is NULL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.