我有一个性能问题,值的实体框架绑定如何影响性能?
我在LINQPad上进行了一些测试,这段代码运行得非常快,如果直接在数据库上运行,就会生成快速查询......
var dataFim = new DateTime(2015,12,12);
var dataInicio = new DateTime(2015,01,01);
long? empresaClienteId = 1081;
var query = Transacoes
.Select(t => new { t.Data, t.Estorno, t.EmpresaClienteId, t.KmFinal, t.KmInicial, t.ValorBruto})
.Where(t => t.Data.Value >= dataInicio
&& t.Data.Value < dataFim
&& t.Estorno == "N"
&& t.EmpresaClienteId == empresaClienteId
&& (t.KmFinal - t.KmInicial) < 500)
.GroupBy(t => new { t.Data.Value.Month, t.Data.Value.Year })
.OrderBy(t => new { t.Key.Month, t.Key.Year })
.Select(t => new
{
Mes = t.Key.Month,
Ano = t.Key.Year,
ValorTotal = t.Sum(r => r.ValorBruto ?? 0),
KmPercorridoTotal = t.Sum(r => (r.KmFinal ?? 0) - (r.KmInicial ?? 0))
});
query.AsNoTracking().Dump();
...但是,如果我将此变量更改为var
var empresaClienteId = 1081;
或长
long empresaClienteId = 1081;
然后突然查询需要永远(但如果在数据库上运行direclty则不行)
模型和请求参数都是不可为空的long,存储列映射也是如此。
任何想法为什么会发生这种情况以及如何处理这个问题?有多长?变量是不可取的,因为这是一个不可为空的参数
PS:我正在使用Oracle数据库并开发