C# 在linq查询中使用带索引的sql

C# 在linq查询中使用带索引的sql,c#,sql,.net,linq,indexing,C#,Sql,.net,Linq,Indexing,我正在使用dbcontext linq查询: var list = context.MyTable.Where(x => x.IsValid).ToList(); SqlProfiler显示以下Sql查询: SELECT * FROM [MyTable] WHERE IsValid = 1 问题是,在这个表中,我使用了很多sql索引,默认情况下,它使用了错误的索引,查询需要花费很长时间。我需要将表中的索引添加到查询中 换句话说,如何从linq获取此查询 SELECT * FROM [M

我正在使用dbcontext linq查询:

var list = context.MyTable.Where(x => x.IsValid).ToList();
SqlProfiler显示以下Sql查询:

SELECT * FROM [MyTable] WHERE IsValid = 1
问题是,在这个表中,我使用了很多sql索引,默认情况下,它使用了错误的索引,查询需要花费很长时间。我需要将表中的索引添加到查询中

换句话说,如何从linq获取此查询

SELECT * FROM [MyTable] WITH(INDEX(PK_MyIndexName)) WHERE IsValid = 1

有一个,使用拦截器,我想找出是什么让SS忽略了这个索引,并尝试修复它(可能通过
创建统计数据
)。如果忘记添加此提示,则如果查询形状以后发生更改,则可能会遇到麻烦。SQL Server可能能够规划这样一个简单的查询。也许扫描真的是更好的选择。sp_更新并重试。表中有多少行,有多少行与IsValid=1匹配?