我认为我多年来一直通过Entity Framework查询进行查询,没有问题。昨天,出于对数据的不同使用,我在基础表中添加了两个索引,最终导致查询在Entity Framework中超时(但在SSMS中运行查询时返回速度比以前快)。数据模型是通过“从数据库更新模型”功能生成的,并且此应用正在使用EF v4。该视图只是我上面提到的具有日期限制的单个基础表的自我联接。我确认删除新索引使Entities查询再次运行没有问题。
我们找到了两种解决方案来使Entity Framework查询再次起作用:
将查询超时设置为0(但我不喜欢这种解决方案)
在基础表中添加另一个索引,该索引专门解决了Entity Framework查询的约束(显然,更好的解决方案,无论如何也应该这样做)
为什么要在表中添加几个索引-直接在SSMS中运行时使基础查询实际上运行得更快,但是却不直接解决正在运行的查询-使实体像这样跳闸?
答案 0 :(得分:0)
听起来您需要添加查询提示:告诉它使用对您来说效果很好的原始索引。提示存在争议,因此需要进行一些研究和大量测试。您可能还会查看数据的“其他用途”:确保新查询不会引起阻塞原始用例的锁定。
https://www.mssqltips.com/sqlservertip/2045/using-hints-to-test-sql-server-indexes/