首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中优化多个左连接?

问如何在MySQL中优化多个左连接?
EN

Stack Overflow用户
提问于 2012-12-10 20:09:39
回答 2查看 456关注 0票数 0

你能帮我让这个查询正常工作吗?

我有一个日志查询,它按天(表:log,包括没有行的天数)计算每个活动用户(表:user,状态:1 (表示活动))的已记录项目(表:calendar )。

以下查询需要10分钟才能运行!如何在几秒而不是几分钟内运行此程序?

代码语言:javascript
复制
SELECT
    c.day, COUNT(u.id) AS count
FROM calendar c
LEFT JOIN log l
    ON c.day = DATE_FORMAT(l.db_timestamp , '%Y-%m-%d')
LEFT JOIN user u
    ON l.user_id = u.id
    AND u.user_status_type_id = 1
WHERE
    c.day > '2012-12-01'
    AND c.day < '2013-01-01'
GROUP BY
    c.day

表结构:

代码语言:javascript
复制
calendar (~3,000 rows)
day
===============================
2012-01-01
2012-01-02
2012-01-03
...
2020-01-01


log (~30,000 rows)
id  user_id  db_timestamp
================================
1   1        2012-01-01 01:01:01
1   2        2012-01-01 01:01:01
1   1        2012-01-01 01:01:01

user (~3,000,000 rows)
id  user_status_type_id
================================
1   1
1   0

结果应如下所示:

代码语言:javascript
复制
Sample Expected Results
day         count
=================
2012-12-01  1
2012-12-02  0
2012-12-03  4
...
2012-12-31  0

不幸的是,它需要永远运行。我接下来该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-10 22:07:47

对于您选择的列,您不需要任何连接。使用以下sql

代码语言:javascript
复制
SELECT DATE_FORMAT(l.db_timestamp , '%Y-%m-%d') AS days, COUNT(l.id) AS COUNT 
FROM LOG l 
WHERE 
DATE_FORMAT(l.db_timestamp , '%Y-%m-%d') > '2012-12-01' 
AND DATE_FORMAT(l.db_timestamp , '%Y-%m-%d') < '2013-01-01'
GROUP BY days

对于用户智能计数

使用

代码语言:javascript
复制
GROUP BY days, l.user_id
票数 0
EN

Stack Overflow用户

发布于 2012-12-10 20:12:17

尝试此操作::在加入时使用DATE()

代码语言:javascript
复制
 SELECT
        c.day, COUNT(u.id) AS count
    FROM calendar c
    LEFT JOIN log l
        ON c.day = DATE(l.db_timestamp)
    LEFT JOIN user u
        ON l.user_id = u.id
        AND u.user_status_type_id = 1
    WHERE
        c.day between '2013-01-01'
 AND '2012-12-01'
        GROUP BY
        c.day
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13800663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档