LINQ to Entities中数据分页时,必须要OrderBy吗
1个回答
展开全部
最佳实践是查询树较简单可以不用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没有指定排序,一年后输出顺序就不一样了。当然这个不是简单的指定聚集索引的单表,是在你多表联合数据逐步攀升的情况下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询