2
我从同一个表a
中提取所有子查询,但需要列b.7dayclicks
,c.7dayclicks
和d.14dayclicks
的信息。SQL不同'group by'和'date range'子查询减慢整个查询的速度
查询是这样的:
select
a.higher_tier_id,
a.lower_tier_id,
b.7dayclicks,
c.7dayclicks,
d.14dayclicks
from
a,
(select higher_tier_id, 7dayclicks
from a
where day >= curdate() - 7
group by higher_tier_id) b,
(select lower_tier_id, 7dayclicks
from a where day >= curdate() - 7
group by lower_tier_id) c,
(select lower_tier_id, 14dayclicks
from a where day >= curdate() - 14
group by lower_tier_id) d
where
day >= curdate() - 3
and a.higher_tier_id = b.higher_tier_id
and a.lower_tier_id = c.lower_tier_id
and a.lower_tier_id = d.lower_tier_id
它采取了很长一段时间来,结果运行。我试图让它更有效率。任何帮助将不胜感激。
- 第一列给出了higher_id
- 第二列给出了lower_id
- 第3列给出7天的点击次数除以higher_id级排序
- 第4列给出7天的点击次数除以lower_id水平
- 分类第5列给出了按照lower_id排序的14天点击次数
我确实认为确实有办法将所有内容以太没有任何加入,但我只是不知道如何..
我认为你可能会把这些逻辑转到应用程序来做出更简单的sql查询。 – SaidbakR
它很难理解你在这里做什么,你有一些奇怪的加入进行。不知道更多我会说1)将curdate设置为一个变量,而不是在每个查询中调用。 2)确保你在表格a的所有列上正确设置了索引。 –
嗨科林,你是什么意思将curdate设置为一个变量,并且索引设置正确? –