我正在尝试使用LINQ和LAMBDA表达式来查询ORACLE数据库中的表。使用group by子句时,获取数据的时间会大大增加。
在下面的代码块中,有一个group by表达式,其中包含if条件。
using (var entities = new Entities())
{
var result = entities.myTable.Where(a => a.COLUMNONE > 1)
.GroupBy(g => new { columnForGrouping = (g.COLUMNTWO > 50 ? "Group1" : "Group2") })
.Select(sel => new {
columnGroup = sel.Key.columnForGrouping,
count = sel.Count()
}).ToList();
}
我想知道这种类型的表达式有多高效?而且,它有更好的吗?
答案 0 :(得分:1)
以下说明可能会导致性能问题:
CAST( "Extent1"."COLUMNTWO" AS number(10,0)))
在sql中强制转换可能会在性能方面产生意外行为。我建议你使用不同的数据类型。
答案 1 :(得分:-1)
Linq sql查询效率不高,尤其是group by和join。强烈建议优化查询并直接使用它。
在我的一个案例中,将时间从12秒减少到3秒。