MySQL在连接表

时间:2017-09-01 00:00:44

标签: mysql

有一张名为" basket_status"在下面的查询中。对于basket_status中的每条记录,篮子中的毛球数量来自另一个表格(yarn_ball_updates)。

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

我尝试根据查询创建视图,但没有提供性能提升。我相信我读到的视图中你不能有子查询和复杂的连接。

我应该采取什么方向来加快此查询?我从未做过MySQL预定的任务或任何事情,但它似乎是" basket_status" table应该有" yarn_ball_count"已经计入了,自动化流程应该更新新的额外count()列吗?

感谢您的帮助或指导。

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

1 个答案:

答案 0 :(得分:0)

我认为你不需要嵌套查询。我不是MySQL开发人员,但不会这样做吗?

def sample(self):
  x = np.random.uniform(0,1,[2])
  z = np.sqrt(-2*np.log(x[0]))*np.cos(2*np.pi*x[1])
  return z * self.sigma_sq + self.mu