我有两个表,想要在它们之间进行联接并总结一些列。联接条件应该是表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
答案 0 :(得分:0)
如前所述,如果没有示例数据,所需结果以及所需逻辑的解释,很难提供帮助,但是您可以尝试以下解决方案:
在销售表中创建两个新列(Datet_b和Datet_c),并在插入/更新时运行DATE_ADD函数以填充它们。
为这两列添加索引,然后运行上面没有DATE_ADD函数的查询。
运行查询,性能应该会好一点