【发布时间】:2013-08-05 16:32:36
【问题描述】:
我们的公司表是使用带有填充空格的字段创建的。
我无权更改数据库。
但是,我注意到当我使用 Trim() 函数创建 LINQ 查询时,性能会下降很多。
这样简单的查询表明性能下降:
Companies
.Where(c => c.CompanyName.Equals("Apple"))
.Select(c => new {
Tick = c.Ticker.Trim(),
Address = c.Address.Trim()
});
有没有办法改变查询以不损失性能?
或者这完全取决于我的 DBA?
【问题讨论】:
-
我会说首先尝试清理数据库。对于所有相关方而言,在数据进入数据库之前确保数据是干净的,通常比在之后尝试处理混乱的数据要容易得多。
-
你能在
"Apple"上填充适量的空格吗?如果没有.Trim()电话,它可以工作吗?你能用.TrimEnd()代替吗? -
@Gabe 你是对的。 Where 子句在没有 .Trim() 调用的情况下工作。但它似乎并没有提高 .Select 的性能。
-
如果查询在没有
.Trim()调用的情况下具有相同的结果和性能,那么下降的原因是什么?
标签: c# performance linq linq-to-sql query-performance