2012-06-14 52 views
1

我有两个非常简单的查询,我正在运行,如下所示。它们都包含我需要的日期和一条信息。我想在查询中将这些返回为单个表格。两个查询都需要大约0.03秒才能运行。每当我试图加入他们,但他们永远占用。有人可以用这个语法来帮助我吗?MySql JOIN日期时间太长

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语法正在逃避我。请注意,每天有不同的时间,这就是为什么我正在做日期(日期)的事情和分组。

谢谢!

+0

大多数时候它不只是在JOIN语法,但事情是如何建立索引,使所有的差异。确保正在加入的字段已编入索引。 – hackartist

回答

0

至少,您需要确保在您加入的各列上添加了一个索引。因此,如果您加入日期列,请确保每张表的日期为

要考虑的第二件事是指数是否是所谓的涵盖您的查询。这意味着,索引包含(包括列)完成查询所需的列。在列出的列表中,这些列将为总计为“Site_Total”表,参数状态为“events.uptimer”表。

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)