gpt4 book ai didi

MySQL 在连接表中使用 count() 匹配记录时性能缓慢

转载 作者:行者123 更新时间:2023-11-29 18:28:01 25 4
gpt4 key购买 nike

下面的查询中有一个名为“basket_status”的表。对于篮子状态中的每条记录,篮子中的纱球计数是从另一个表 (yarn_ball_updates) 中得出的。

basket_status 表有 761 行。该yarn_ball_updates表有1,204,294条记录。运行下面的查询大约需要 30 秒到 60 秒(取决于服务器的繁忙程度)并返回 750 行。显然,我的问题是对所有 761 个basket_status 记录的 1,204,294 条记录进行匹配。

我尝试根据查询创建 View ,但没有提高性能。我相信我读过,对于 View ,不能有子查询和复杂的连接。

我应该采取什么方向来加速这个查询?我从来没有做过 MySQL 计划任务或任何东西,但似乎“basket_status”表中应该已经有一个“yarn_ball_count”计数,并且自动化过程应该更新新的额外 count() 列? p>

感谢您的帮助或指导。

SELECT p.id, p.basket_name, p.high_quality, p.yarn_ball_count
FROM (
SELECT q.id, q.basket_name, q.high_quality,
CAST(SUM(IF (q.report_date = mxd.mxdate,1,0)) AS CHAR) yarn_ball_count
FROM (
SELECT bs.id, bs.basket_name, bs.high_quality,ybu.report_date
FROM yb.basket_status bs
JOIN yb.yarn_ball_updates ybu ON bs.basket_name = ybu.alpha_pmn
) q,
(SELECT MAX(ybu.report_date) mxdate FROM yb.yarn_ball_updates ybu) mxd
GROUP BY q.basket_name, q.high_quality ) p

最佳答案

我认为您不需要为此进行嵌套查询。我不是 MySQL 开发人员,但这行不通?

SELECT bs.id, bs.basket_name, bs.high_quality, count(*) yarn_ball_count
FROM yb.basket_status bs
JOIN yb.yarn_ball_updates ybu ON bs.basket_name = ybu.alpha_pmn
JOIN (SELECT MAX(ybu.report_date) mxdate FROM yb.yarn_ball_updates) mxd ON ybu.report_date = mxd.mxdate
GROUP BY bs.basket_name, bs.high_quality

关于MySQL 在连接表中使用 count() 匹配记录时性能缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45991643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com