gpt4 book ai didi

mysql - 加速mysql内部查询

转载 作者:行者123 更新时间:2023-11-30 23:05:18 25 4
gpt4 key购买 nike

我目前有:

SELECT ads, id as mid, (SELECT IFNULL(SUM(amount),0) FROM trans WHERE paidout=0 AND user_id=mid) as amount FROM accounts

我如何执行内部求和查询,然后遍历它并以相同的方式将余额放在一起?

最佳答案

子查询将对返回的每一行执行。如果将其转换为 LEFT JOIN,它将执行一次并且应该会快得多。

SELECT
ads,
id AS mid,
COALESCE(amount, 0) AS amount
FROM
accounts
LEFT JOIN (
/* Subquery returns SUM(amount) per user_id */
/* LEFT JOIN in case there are no matching records */
SELECT user_id, SUM(amount) AS amount
FROM trans
WHERE paidout = 0
GROUP BY user_id
) amt ON accounts.id = amt.user_id

SUM() 也可以在您的情况下在外部查询中完成,对所有其他列应用 GROUP BY

SELECT 
accounts.ads,
accounts.id AS mid
COALESCE(SUM(amount), 0) AS amount
FROM
accounts
LEFT JOIN trans ON accounts.id = trans.user_id
WHERE trans.paidout = 0
GROUP BY
accounts.ads,
mid

关于mysql - 加速mysql内部查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22173602/

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