2012-11-13 31 views
-2

我以下查詢使用連接進行處理。有沒有其他選擇,而不是使用這些計數和連接?MySQL查詢優化 - (需要它沒有連接)

select 
    ipd.data_city as city, 
    count(distinct f.dim_ipinfo_id) as visitors, 
    count(distinct f.dim_visit_id) as visits, 
    count(f.dim_Pageview_id) as pageviews 
from fact_table f 
left join dim_data ipd on ipd.dim_data_id = f.dim_data_id 
where f.dim_member_id = 725 
group by city 
+1

現在需要多長時間?什麼是您的期望查詢時間與儘可能多的數據數量? – bonCodigo

+0

爲什麼不使用JOIN?這是面試問題嗎? –

+0

需要30秒才能執行,並且我有超過1000萬的數據行來運行此查詢。 – Edge

回答

1

在知道您的目標和數據結構之後,不容易理解。
但是第一眼的JOIN似乎必要,因爲分組的城市場,這似乎是在* dim_data *表完成。
如果您在* fact_table *數據中有一個指向城市的字段,您可以將其用於分組並刪除該聯接,如果不是,則必須堅持。
此外,如果你不需要城市上的分組,你可以避免加入,但id似乎並不是這樣。