首页 新闻 会员 周边

Linq中>0 && >=1查询失败

0
[待解决问题]

我在ASP.NET MVC中使用linq查询一个表,里面有80w+的数据。

SaleKey为1的数据有70w条。

用linq写了一个类似

DataBase db = new DataBase();
int i = 1;
var temp = db.Fruits.Where(f => f.SaleKey == i && f.MainKey > 0);

MainKey是主键。

碰到的问题比较复杂,我试了很多条件了。

代码块里列出的Linq在运行时会超时,30s的响应时间。

什么where条件都不加,1s加载。查看sql源码是用MainKey>=1作条件查找的。

f.MainKey > 0的条件下

        把 i 换成1,1秒加载

        把 i 的相关条件改成string,1秒加载

f.SaleKey == i 的条件下
f.MainKey >= 1,1秒加载
          f.MainKey >= -1,1秒加载
把where条件调换,1秒加载。即.Where(f.MainKey > 0 && f.SaleKey == i).
以上的5种查询,看了sql源码后发现执行写的Linq后都进行了以MainKey >=1的查找。

发现问题好像就是.Where(Int的引用 && 默认查找键>0)这两个条件引起了超时。
同事将引发超时的源码输入SSMS,1秒不到就加载好了。
Destiny130的主页 Destiny130 | 菜鸟二级 | 园豆:208
提问于:2017-10-20 19:44
< >
分享
所有回答(1)
0

调试出 运行时真正执行的SQL语句,到数据库里跑。

另外,看看 SaleKey 的索引什么情况。

西漠以西 | 园豆:1675 (小虾三级) | 2017-10-23 17:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册