当在管理工具中执行存储过程时,它完成时间不到0.1秒,但是通过EF执行时需要超过2秒。
以下是分析器输出:
有点讽刺的是,创建该存储过程的原因是为了提高EF查询性能,因为该查询需要大约1.2秒。
更新 值得一提的是,SP结果映射到一个EF复杂类型。我没有使用任何玄学操作进行调用:
var menuTags = db.GetMenuTags(2, "en-US");
EF生成的SQL语句是:
exec [dbo].[GetMenuTags] @CustTypeId=2,@LanguageId='en-US '
唯一的区别是EF在@LanguageId的末尾添加了一堆空格,但这不会影响性能。我已经在MSSMS中尝试了完全相同的SQL语句,与没有空格时的表现一样好。