LINQ to Entities中数据分页时,必须要OrderBy吗
1个回答
推荐于2016-04-27 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
最佳实践是查询树较简单可以不用OrderBy。
什么叫简单,单聚集列输出。当然还有一些特例,比如全复合主键表。这都是特列。何必为几个特列妨碍99%的情况。
以下是Linq常用的形式。
ColEntities = t.OrderBy(v => v.ID).Skip((pageSkip - 1) * maxPageSize).Take(maxPageS)
当然这是SQL2005。
还有数据库不支持ROW_NUMBER() OVER (ORDER BY XXX)这种分页开窗函数呢。CE是排序TOP形式。
那就更要用了,尤其分页开窗函数生成在内部,即使这样跟别的集合投影交集等输出都可能生成不同的查询计划。
举个例子:操场上有五个人,从高到底排序,大家比划一下就出结果。要是五万人,你认为怎么办。数据库也这样,数据量大的时候,你如果不指定排序,它可能要找一个相对优化的排序输出方式。数据量大, 自然输出顺序还不一样,虽然这个人性。
但有人可不这样想。同样的SQL没有指定排序,一年后输出顺序就不一样了。当然这个不是简单的指定聚集索引的单表,是在你多表联合数据逐步攀升的情况下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询