3

调用数据访问应用程序块时非常奇怪的减速。

它调用的 SP(“QuestionsToBeAnswered”)在不到 1 秒的时间内返回 58 行和三列(两个 GUID 和一个整数:21AF77DA-2E76-47DB-AB54-0E5C85CD9AD8、21AF77DA-2E76-47DB-AB54-0E5C85CD9AF0、2)直接在服务器上执行。我的 SQL 体验非常好,我确信 SQL 服务器上不存在该问题。

但是,当它通过 DAAB 调用时,需要很长时间才能返回对象集合。ExecuteSprocAccessor(...) 通常返回一个 IEnumerable,并且 SP 直到集合被枚举或以其他方式被消耗后才被执行,所以这个问题在消耗发生之前不会出现。

DatabaseInstance.ExecuteSprocAccessor<T>(storedProcedure, rowMapper, args);

鉴于相同的代码返回 >200 行相当复杂的信息没有问题,我很困惑为什么这段代码需要这么长时间(55 秒!)来执行。

任何想法都会受到欢迎...

4

1 回答 1

0

您可以尝试运行 SQL Profiler 以查看使用 DAAB 运行时实际调用的样子。有了它,看看它正在使用的执行计划。

过去,我编写了一些代码,它们作为 SQL 查询运行良好,但作为存储过程却非常慢。结果是查询优化器对一些重复索引使用了不同的 SQL Query 执行计划,然后是存储过程。在对索引进行排序后,两者都以相同的速度运行。

于 2013-09-11T21:41:42.890 回答