2

我有一段 Entity-to-SQL 代码组成一个IQueryableToPagedList()在其上运行,然后将结果传递到 MVC 视图中。

ToPagedList()运行 SQL 查询超时失败。我提取了生成的 SQL 查询(使用IQueryable.ToString())并在服务器上运行它——它在不到一秒的时间内运行并且输出为空(这是正确的)。

因此,我ToPagedList()运行了一个查询,该查询将产生一个运行半分钟并超时的空结果,并且我拥有在同一台服务器上运行不到一秒的底层 SQL。

由于 SQL 查询输出为空,我不能将延迟归咎于过滤、检索或 EF 中的任何其他内容。

什么会导致产生空输出的快速 SQL 查询从内部运行极其缓慢ToPagedList()

UPD

这个问题似乎已经自行解决了,所以看起来这是运行代码的机器和 SQL Server 机器之间的一些临时问题。

4

1 回答 1

0

确保在 SQL Server 上运行 TRACE 并查看 Entity 正在生成的查询,然后检查其执行计划。

大多数情况下,最新版本的 Entity 在创建健壮查询方面做得很好,但这并不意味着在您正在访问的表上放置好 INDEX 会显着加快速度。

享受!

于 2013-02-19T16:29:21.510 回答