0
在下面的查詢中有一個名爲「basket_status」的表。對於basket_status中的每條記錄,籃子中紗球的數量正在從另一個表(yarn_ball_updates)中進行計數。MySQL在連接表中匹配記錄的count()性能較差
basket_status表格有761行。 yarn_ball_updates表有1,204,294條記錄。運行下面的查詢需要大約30秒到60秒(取決於服務器的繁忙程度)並返回750行。顯然我的問題是對761個basket_status記錄中的1,204,294條記錄進行匹配。
我試圖根據查詢製作視圖,但沒有提供性能提升。我相信我閱讀過你的觀點,你不能有子查詢和複雜的聯接。
我應該採取什麼方向來加速此查詢?我從來沒有做過MySQL計劃的任務或任何東西,但似乎「basket_status」表應該有一個「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