所以我有一个带有以下WHERE语句的查询
WHERE
(SELECT max(pa.txndate)
FROM player_activity pa
WHERE pa.userID = customer_profile.userID
) = date(CURDATE()) - INTERVAL 7 DAY
我的查询实际上还有其他几个子查询,但我被告知所有子查询都会导致性能下降,因此我需要使用存储过程。
创建以下
CREATE PROCEDURE `getMaxPaDate`()
BEGIN
SELECT userid, max(txndate)
FROM player_activity
GROUP by userid;
END
但是,我不知道如何调用存储过程,所以不出所料,以下对我没有用。
WHERE
call getMaxPaDate() = date(CURDATE()) - INTERVAL 7 DAY
帮助?
答案 0 :(得分:0)
使其成为存储过程不会提高性能。您需要做的是使用连接。
SELECT cp.*
FROM customer_profile AS cp
JOIN (SELECT userID
FROM player_activity
GROUP BY userID
HAVING MAX(pa.txndate) = TODAY() - INTERVAL 7 DAY) AS pa
ON cp.userID = pa.userID