mysql - mysql group_concat 与连接不同,速度非常慢可怕的性能
问题描述
我有以下查询,它产生了我需要的结果,但就大型数据库/表的性能而言,它是可怕的。有人可以指出为什么它这么慢,并告诉我另一种写这个的方法,所以它很快。我需要一个多小时才能完成!大量的 ram .. 专用服务器没有太多其他内容。
UPDATE feed.product fp
LEFT JOIN ( SELECT p.date_upd, p.id_product, GROUP_CONCAT(DISTINCT(CONCAT ('https://www.example.com/', pi.`id_image`,'-x_shop/',pl.link_rewrite,'.jpg')) SEPARATOR ",") AS images
FROM db.products p
LEFT JOIN db.image pi ON (p.id_product = pi.id_product)
LEFT JOIN db.product_lang pl ON (p.id_product = pl.id_product)
GROUP BY p.id_product
) s ON fp.id_product = s.id_product
SET fp.images = s.images
WHERE fp.image_updated = 1;
解决方案
您可能会发现使用相关子查询会更好:
UPDATE feed.product fp
SET fp.images = (SELECT GROUP_CONCAT(DISTINCT(CONCAT ('https://www.example.com/', pi.`id_image`,'-x_shop/',pl.link_rewrite,'.jpg')) SEPARATOR ",") AS images
FROM db.image pi JOIN
db.product_lang pl
ON pi.id_product = pl.id_product
WHERE fp.id_product = pi.id_product
)
WHERE fp.image_updated = 1;
fp
如果只有少数行被更新,这将特别有用。
推荐阅读
- python - 使用 Python 进行多处理
- json - 使用 JQ 到特定的 csv 格式
- c# - 根据对象的属性生成唯一的字符串键(cachekey)
- raspbian - 当我尝试在我的树莓派 3 上安装 PyQtWebEngine 时出错
- python - python Parralize 在函数内部并返回字典
- python - Python:数据类的唯一整数?
- python - Python 将 JSON 转换为 CSV,忽略 "\n"
- flutter - 如何以米为单位获取用户的位置精度?
- node.js - Mongoose模型如何将数组作为属性,其中包含与父模型相同的模型
- javascript - ReactJS Redux 的 props 上的映射