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設置爲一個變量,並且索引設置正確? –