我正在运行两个非常简单的查询,如下所示。它们都包含我需要的日期和一条信息。我希望在我的查询中将它们作为单个表格返回。两个查询都需要大约.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有不同的时间,这就是我做日期(日期)事情并按此分组的原因。
谢谢!
答案 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 表