获得相同结果的最佳查询

时间:2020-06-26 08:15:08

标签: mysql sql

我有面试问题,可以创建最优化的查询以获得相同的结果。但我不知道,有见识吗?

我已阅读Sub query vs Join, whats more faster ? 我得到的摘要是Joinsub-query快,是吗?

SELECT 
    c.*, 
    COUNT(DISTINCT d.activity_id) AS cdms
FROM
    ( 
    SELECT a.id, 
        a.name, 
        a.email, 
        a.grade, 
        DATE(a.created_at) AS date, 
        COUNT(DISTINCT b.serial) AS cdis 
    FROM 
        users a 
    LEFT JOIN 
        payment b ON a.id = b.user_id
    GROUP BY 
        a.id, 
        a.name, 
        a.email, 
        grade, 
        date_created_at
) c 
LEFT JOIN 
    activity d 
ON c.id = d.user_id
WHERE 
    date_created_at >= DATE_SUB('2019-01-08', INTERVAL 1 DAY)
GROUP BY 
    id, 
    name, 
    email, 
    grade, 
    date, 
    cdis

0 个答案:

没有答案