gpt4 book ai didi

c# - LINQ 查询太慢,等效 SQL 很好

转载 作者:行者123 更新时间:2023-11-30 17:53:13 28 4
gpt4 key购买 nike

我正在尝试使用 C# 和 LINQ 在数据库中查询每日活跃用户。我有一个运行良好的 SQL 查询。它在 < 4 秒内完成运行。

我的表名为 Logins,具有以下属性:(DATETIME)Date、(GUID)UserId 等

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()

}

测试后,当我必须选择 (u=>u.UserId) 时,Count 语句似乎永远都在运行,因为我认为它必须映射回 UserId 的列表。我怎样才能更有效地编写查询?

感谢任何帮助。谢谢!

最佳答案

我会做如下...

var UserCount = Logins.Where(x => x.Date = DateTime.Today)
.Select(x => x.UserId).Distinct().Count();

您当然可以用您想要计数的任何一天替换这一天。

关于c# - LINQ 查询太慢,等效 SQL 很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17617384/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com