我使用C#进行Linq-to-Entities查询。
var query = from a in dbc.AcopioVias
join b in dbc.Comunas on a.IdComuna equals b.Id
join c in dbc.TipoViaCorrectoes on a.IdTipoViaCorrecto equals c.Id
join d in dbc.ViaCorrectoes on a.IdViaCorrecto equals d.Id
join e in dbc.ViaIncorrectoes on a.IdViaIncorrecto equals e.Id
where b.CodCut.Contains(cut)
&& e.NombreVia_I.Contains(posibleNombreVia)
select new
{
c.TipoVia_C,
d.NombreVia_C
};
string tv = null;
string nv = null;
foreach (var item in query)
{
tv = item.TipoVia_C;
nv = item.NombreVia_C;
}
我的问题,很慢。我需要查询每条记录,它可能是900.000条记录!对于我需要查询的每条记录。
我可以做些什么来提高查询速度?
非常感谢!
答案 0 :(得分:0)
如果要加快查询速度,应使用已编译的查询。语法不是很漂亮,但效率很高。
以下是它的工作原理
您创建一个公共静态委托Func方法:
然后通过调用CompiledQuery静态类的Compile方法来定义委托的值
像任何其他委托方法一样调用公共静态Func方法
以下是一个示例,假设您想从ID获取客户端名称,它看起来就像那样
public static Func<DataContext, int /*input type*/, string /*output type*/> GetId =
CompiledQuery.Compile((DataContext db, int id) =>
from customer in Db
where customer.id == id
select customer.name );
GetId(dataContext, CustomerId);