LINQ DBcontext加载数据的时间太长

本文关键字:时间 数据 DBcontext 加载 LINQ | 更新日期: 2023-09-27 18:06:14

当我在SQL Server Management Studio中执行存储过程时,它在不到1秒的时间内返回结果,但是当我尝试通过LINQ和此代码加载数据时,它需要长达5秒的时间。有什么建议吗?

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.SP_SELECT_MyData")]
public ISingleResult<SP_SELECT_MyDataResult> SP_SELECT_MyData([global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(50)")] string bname)
{
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), bname);
    return ((ISingleResult<SP_SELECT_MyDataResult>)(result.ReturnValue));
}

这一行占用了所有时间

IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), bname);

LINQ DBcontext加载数据的时间太长

感谢@Ulugbek Umirov提供的链接这是由于缓存中的BAD执行计划导致没有使用索引。通过在存储过程中使用WITH RECOMPILE创建索引并禁用缓存选项,大大提高了性能。

通过使用全文搜索索引来改进过滤选项,因为LIKE '%abc%'不能使用非聚类索引,而全文搜索索引可以。

我想评论一下,但是还没有足够的声望。

它第二次运行得更快吗?如果是这样,那么你所描述的听起来可以通过使用编译查询来解决,但根据这篇文章,编译查询不适用于存储过程:http://aspguy.wordpress.com/2008/08/15/speed-up-linq-to-sql-with-compiled-linq-queries/

你可以在linq中编写查询,而不是使用编译查询,或者它必须在一个进程中?