MySQL DateTime连接两个大表

时间:2018-06-28 18:24:43

标签: mysql sql join

我有两个表,想要在它们之间进行联接并总结一些列。联接条件应该是表A的时间在表B的时间的1-5分钟之内。

所以B.time <= A.time <= B.time +(1 | 5)分钟

这是代码,我在两个datetime列上都有索引(btree)。但它似乎运行SUPER SLOW。我能做些别的事情吗?

SELECT
    a.Name,
    SUM(b.UnitsSold),
    SUM(b.Revenue),
    SUM(c.UnitsSold),
    SUM(c.Revenue)
FROM cars a
INNER JOIN sales b
ON
    b.Datet <= a.Datet
    and a.Datet <= DATE_ADD(b.Datet, INTERVAL 1 MINUTE)
INNER JOIN sales c
ON
    c.Datet <= a.Datet
    and a.Datet <= DATE_ADD(c.Datet, INTERVAL 5 MINUTE)
GROUP BY
    a.name

1 个答案:

答案 0 :(得分:0)

如前所述,如果没有示例数据,所需结果以及所需逻辑的解释,很难提供帮助,但是您可以尝试以下解决方案:

在销售表中创建两个新列(Datet_b和Datet_c),并在插入/更新时运行DATE_ADD函数以填充它们。

为这两列添加索引,然后运行上面没有DATE_ADD函数的查询。

运行查询,性能应该会好一点