1

我有一个由 LINQ To Entities 生成的复杂 SQL 查询。

  • 在 SQL Server 中未缓存执行计划时需要 8 秒。
  • 执行计划缓存在 SQL Server 中需要 2s。

EF 或 SQL Server 中有一种方法可以预热执行计划缓存吗?

谢谢

4

1 回答 1

3

不。

您有性能问题,并通过测量和调查瓶颈将其作为性能问题解决。遵循优秀的等待和队列方法。阅读了解 SQL Server 如何执行查询以了解查询执行时发生的情况。

您需要隔离一些问题:

  • 正如您所说,它是冷计划缓存还是冷数据缓存(更有可能)?
  • 如果是冷计划缓存,编译真的会持续 6 秒吗?我不买这个。
  • 如果是冷数据缓存,为什么您的查询会发出 6 秒的 IO?
  • 即使使用热缓存,您的查询也会消耗 2 秒的执行时间。为什么?它是否端到端扫描表?您是否缺少索引或更多?(提示:是的,你知道)。

阅读 Waits and Queues 论文将教您如何回答这些问题。

解决原因,而不是症状。

于 2013-09-05T08:55:00.027 回答