日期上的MySql JOIN花费的时间太长

时间:2012-06-14 05:25:06

标签: mysql

我正在运行两个非常简单的查询,如下所示。它们都包含我需要的日期和一条信息。我希望在我的查询中将它们作为单个表格返回。两个查询都需要大约.03秒才能运行。每当我试图加入它们时,它们都会永远存在。有人可以用这种语法帮助我吗?

SELECT date(date) AS Day, sum(total) / 3600.0 AS Hours 
FROM events.Site_Total 
WHERE date > '2012-01-01' 
GROUP BY Day; 

SELECT date(sdate) AS Day, sum(arg) AS Count
FROM events.uptimer 
WHERE state > '2012-01-01' 
GROUP BY Day;

我知道这很简单,但是不需要永远运行的正确JOIN语法就是我。请注意,每天有多个entires有不同的时间,这就是我做日期(日期)事情并按此分组的原因。

谢谢!

2 个答案:

答案 0 :(得分:1)

希望这会起作用::

Select site.Day, site.Hours, uptimer.Day, uptimer.Count
from 
(SELECT date(date) AS Day, sum(total) / 3600.0 AS Hours 
FROM events.Site_Total 
WHERE DATE(date) > '2012-01-01' 
GROUP BY Day) as site 
inner join
(
SELECT date(sdate) AS Day, sum(arg) AS Count
FROM events.uptimer 
WHERE DATE(sdate)> '2012-01-01' 
GROUP BY Day) as uptimer 
on (site.Day=uptimer.Day) 

答案 1 :(得分:0)

至少,您需要确保在您加入的列上添加了每个表的索引。因此,如果您要加入 date 列,请确保每个表都有 date 的索引。

要考虑的第二件事是索引是否是您的查询所谓的覆盖。这意味着,索引包含(作为包含列)完成查询所需的列。在您列出的列中,“Site_Total”表的这些列 total ,“events.uptimer”的 arg state