1

我正在运行两个非常简单的查询,如下所示。它们都包含我需要的日期和一条信息。我想在我的查询中将它们作为单个表返回。这两个查询运行大约需要 0.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 语法让我望而却步。请注意,每天有多个不同时间的整体,这就是我做日期(日期)事情并按此分组的原因。

谢谢!

4

2 回答 2

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) 
于 2012-06-14T05:32:40.510 回答
0

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

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

于 2012-06-14T05:29:41.150 回答