我创建的ASP MVC项目从大Mysql数据库获取数据〜500000LINQ和.Count之间的大数据库
我的DataTable添加到我的前端与各列的过滤器,其中只显示10个条目。
data = dc.books.OrderBy(x => x.id).Where(x =>
(market_id == 0 || x.market_id == market_id)
&& (name == null || x.name != null && (x.name.Contains(name)))
&& (author == null || x.author != null && (x.author.Contains(author)))
).Skip(param.Start).Take(10).ToList();
工作又好又快。
当我尝试添加计数后过滤器绑好。不工作服务器Mysql超时错误或工作非常缓慢
count = db.books.Count(x =>
(market_id == 0 || x.market_id != 0 && x.market_id == market_id)
&& (name == null || x.name != null && (x.name.StartsWith(name)))
为什么计数不工作或缓慢?
所有代码我conttoller here
Sql Server的计数速度非常快(还有谓词)。无论计数是否快速,它在数据库引擎中可能都是根深蒂固的。我不知道MySql,但我认为你错过了一些重要的索引。 –