[英]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.