我正在嘗試使用C#和LINQ查詢數據庫中的日常活動用戶。我有一個SQL查詢,工作正常。它在4秒鐘內完成<。LINQ查詢太慢,等效SQL很好
我的表稱爲登錄,具有性質:(DATETIME)日期,(GUID)用戶ID等
SELECT CAST([DATE] AS DATE) Date , COUNT (DISTINCT USERID) DailyActives
FROM Logins
GROUP BY CAST([DATE] AS DATE)
ORDER BY CAST([DATE] AS DATE)
,計數是記錄在當日的不同用戶。我的LINQ查詢給出了正確的答案,但非常慢(很多分鐘)。在這裏,我從一個特定月份
from rows in Logins
where rows.Date.Month == 04 && rows.Date.Year == 2013
group rows by rows.Date.Day into MyGroup
orderby MyGroup.Key
select new
{
LoginDate = MyGroup.Key,
Count = MyGroup.Select(u => u.UserId).Distinct().Count()
}
測試後,它似乎像count語句選擇需要永遠當我必須選擇(U => u.UserId),因爲我覺得它有映射回列表UserId的。我怎樣才能更有效地編寫查詢?
任何幫助表示讚賞。謝謝!
你試過PLINQ:http://msdn.microsoft.com/en-us/library/dd460688.aspx –
@ Tim.Tang這聽起來像一個數據庫Linq查詢(L2SQL/L2EF),所以PLINQ不會幫助。 –
它們並沒有完全相同,因爲你在SQL中沒有WHERE子句,因爲你正在分組(慢),所以你並沒有在那一天獲得。我會張貼我會這樣做的方式,你可以自由嘗試。 –