mysql - 求和查询花费太多时间
问题描述
下面的查询大约需要 19 秒来获取 7877 条记录。我想减少时间。
SELECT
dvm.pk_user_id,
dvm.UID,
IFNULL((SELECT SUM(taskassign.vreward_points) FROM tbl_task_master AS tasks LEFT JOIN tbl_task_assign_details AS taskassign ON tasks.pk_task_id = taskassign.fk_task_id WHERE taskassign.vtaskstatus = '1' AND dvm.pk_user_id = taskassign.fk_user_id GROUP BY taskassign.fk_user_id),0) AS earning_reward_points
FROM tbl_digital_volunteer_master AS dvm
ORDER BY earning_reward_points DESC,
pk_user_id ASC
解决方案
做同样的事情但加入一个怎么样
SELECT
dvm.pk_user_id,
dvm.UID,
IFNULL(t.earning_reward_points,0) AS earning_reward_points
FROM tbl_digital_volunteer_master AS dvm
LEFT JOIN (
SELECT taskassign.fk_user_id, SUM(taskassign.vreward_points) AS earning_reward_points
FROM tbl_task_master AS tasks
LEFT JOIN tbl_task_assign_details AS taskassign ON tasks.pk_task_id = taskassign.fk_task_id
WHERE taskassign.vtaskstatus = '1'
GROUP BY taskassign.fk_user_id
) AS t ON dvm.pk_user_id = t.fk_user_id
ORDER BY earning_reward_points DESC, pk_user_id ASC
推荐阅读
- html - Mailchimp 模板列被推送到 Outlook 中的下一行
- javascript - 从 Android 手机上的 HTML 页面发送 SMS 文本而不显示 SMS 窗口
- postgresql - 用排好序的列描述表
- c - 主功能块下方的功能在 1 种情况下出现错误,但在 2 种情况下没有错误
- ruby - 在 ruby 中解决 Hackerrank 的字谜解决方案
- java - java.util.Hashtable.put 处的“线程“主”java.lang.NullPointerException 中的异常(未知来源)
- c# - 检查一个按钮是否在另一个按钮中被按下
- ios - 为 Apple 应用付费一次,在多台设备上安装
- python - 在 Python 中迭代字典的复杂性
- keras - 验证生成器批量大小