.net 如何使LinqToSql通过“;索引提示”;到sql server?

.net 如何使LinqToSql通过“;索引提示”;到sql server?,.net,sql-server,linq-to-sql,.net,Sql Server,Linq To Sql,由于我们不能信任我们的客户更新sql server中的索引统计数据等,我们过去不得不使用。(由于我们的一些客户仍然使用Sql Server 2000,我们也无法在Sql Server的更高版本中依赖更好的查询优化器) 那么,在使用LinqToSql而不是原始Sql构建查询时,如何传递索引提示呢?不幸的是,这是不可能的。您唯一能做的就是影响事务隔离级别。请参见此示例。这是不受支持的,查询上的唯一选项是设置事务隔离级别,但这无助于解决此问题 我想推荐两种做法之一,这是你真正需要做的事情 您可以编写一

由于我们不能信任我们的客户更新sql server中的索引统计数据等,我们过去不得不使用。(由于我们的一些客户仍然使用Sql Server 2000,我们也无法在Sql Server的更高版本中依赖更好的查询优化器)


那么,在使用LinqToSql而不是原始Sql构建查询时,如何传递索引提示呢?

不幸的是,这是不可能的。您唯一能做的就是影响事务隔离级别。请参见此示例。

这是不受支持的,查询上的唯一选项是设置事务隔离级别,但这无助于解决此问题

我想推荐两种做法之一,这是你真正需要做的事情

  • 您可以编写一个存储过程并在过程中处理它,然后使用LINQ调用它

  • 从LINQ迁移到SQL


  • 就我个人而言,如果这真的有必要,我会建议选择二。如果事实上您必须对数据库调用采取这种级别的操作/控制,那么自动生成的SQL在以后也会对您造成问题。

    为什么他们需要更新统计信息?你应该让他们自动更新-并且可以很容易地在每个周末运行更新脚本。20年来,我在统计数据更新方面从未遇到过问题。在这一点上,我必须同意@TomTom。。。这并不是索引提示想要解决的问题,我认为通过自动更新(默认情况下是启用的)强制进行统计信息更新会让您获得更好的效果或者让你自己的后台进程运行
    updatestatistics
    sp_updatestats
    ,如果你担心他们会关闭自动更新。@Tom,系统需要24*7运行,所以“更新脚本”等很难达成一致,我不知道安装系统的人是否理解它们是什么。缺乏数据统计数据的问题可能只是一个“老太太的故事”,但当我问为什么要使用“索引提示”时,我就被告知了这一点。我可能不使用任何索引提示就离开了,但我正在努力弥补我的不足。为什么?SQL Server Enterprise(在24/7场景中唯一可用的,因为它具有所有优秀的高可用性功能)支持不间断地重新引用索引;)@汤姆很有趣!不是每个人都有15000美元——特别是使用Linq2Sql的人