【发布时间】:2015-10-09 17:26:49
【问题描述】:
我有大约 100 万条记录的记录集。我正在尝试查询记录以报告月度数据。
以下 MySQL 查询在大约 0.3 秒内执行
SELECT SUM(total), MONTH(create_datetime), YEAR(create_datetime)
FROM orders GROUP BY MONTH(create_datetime), YEAR(create_datetime)
但是我无法找出一个可以尽可能快地执行的实体框架 lambda 表达式
我想出的唯一有效的说法是
var monthlySales = db.Orders
.Select(c => new
{
Total = c.Total,
CreateDateTime = c.CreateDateTime
})
.GroupBy(c => new { c.CreateDateTime.Year, c.CreateDateTime.Month })
.Select(c => new
{
CreateDateTime = c.FirstOrDefault().CreateDateTime,
Total = c.Sum(d => d.Total)
})
.OrderBy(c => c.CreateDateTime)
.ToList();
但是速度太慢了。
如何让这个查询像直接在 MySQL 中一样快速执行
【问题讨论】:
-
发送到服务器的实际 SQL 命令是什么?我们需要了解速度问题是服务器端还是客户端。
标签: c# mysql entity-framework ef-code-first