论EF+LINQ分页和数据库分页效率有关问题
论EF+LINQ分页和数据库分页效率问题RT小弟一直纠结EF+LINQ是不是没有数据库分页的效率高或者说EF+LINQ分页
论EF+LINQ分页和数据库分页效率问题
RT
小弟一直纠结EF+LINQ是不是没有数据库分页的效率高 或者说EF+LINQ分页会占用更多资源
还有对于大数据呢 EF+LINQ是否还能胜任?期待你的解答 thx
[解决办法]
都答非所问!
EF分页也没什么问题,唯一的就是查询了所有字段,比如你有个content字段内容有1w字,这时候就有性能问题了。
所以查询的时候要select new 你查询的几个字段。但这样写法又不太简洁了。
[解决办法]
使用skip()结合take()方法在LINQ里实现数据分页,效率上不比数据库分页差
[解决办法]
你需要了解一下LINQ的延迟查询特性先
var q = from r in XXentities.XXX
select r;
此时q里是没有数据的。
只有执行到 q.skip().take()时,才会去数据库取一页数据并返回
[解决办法]
不会取全部的,仅当用控件自带的分页才会那样
用Skip+Take。生成的SQL语句效率还是很高的,跟自己写的比较起来,稍微臃肿一点儿罢了
[解决办法]LINQ分页效率和直接用SQL完全等同,如果忽略接口开销的话。我不是说LINQ效率高,是这样的。
如果数据库支持RowNumber,那么LINQ会将Take Skip转化成where RowNumber > .. and < ... 这样的SQL执行,如果数据库不支持,LINQ会查出足够多的数据,然后再得到需要的。这也就是说,效率高不高和你用什么数据库(当然LINQ Provider也要支持)有关。