在处理SQL Server和作为聚簇索引的日期时,为了正确访问索引,查询必须采用以下形式:
select fields
from dbo.MyTable
where myDate between @begDate and @endDate
between运算符是触发聚簇搜索的原因。如何告诉LINQ发出between运算符而不是> = this和< = that?
答案 0 :(得分:0)
不幸的是,Linq没有运营商或同等运营商。实现这一目标的最佳(也可能)唯一方法是使用sql。
如果您希望编写复杂或优化的查询,最好使用sql而不是linq。其主要优点是:
我同意Gerge Mauer建议使用存储过程或ADO。
这可能仍然会让您遇到参数嗅探问题,在这种情况下,您可能必须使用查询提示(如OPTIMIZE FOR / RECOMPILE)或局部变量来解决此问题,如本文所示:
http://blogs.msdn.com/b/turgays/archive/2013/09/10/parameter-sniffing-problem-and-workarounds.aspx