`
guoming521579
  • 浏览: 15256 次
文章分类
社区版块
存档分类
最新评论

oracle Provider先分页后排序的有关问题

 
阅读更多
oracle Provider先分页后排序的问题?
假设User表数据为:
ID Username CreateTime SeqNum
Guid生成 111 1900/1/13 16:19 6
Guid生成 112 1900/1/13 16:19 3
Guid生成 113 1900/1/13 16:19 2
Guid生成 114 1900/1/13 16:19 5
Guid生成 115 1900/1/13 16:19 4
Guid生成 116 1900/1/13 16:19 1
Guid生成 117 1900/1/13 16:19 7
Guid生成 118 1900/1/13 16:19 9
Guid生成 119 1900/1/13 16:19 8
Guid生成 120 1900/1/13 16:19 10
Guid生成 121 1900/1/13 16:19 16
Guid生成 122 1900/1/13 16:19 13
Guid生成 123 1900/1/13 16:19 14
Guid生成 124 1900/1/13 16:19 12
Guid生成 125 1900/1/13 16:19 11
Guid生成 126 1900/1/13 16:19 17
Guid生成 128 1900/1/13 16:19 20
Guid生成 129 1900/1/13 16:19 19
Guid生成 130 1900/1/13 16:19 15
Guid生成 131 1900/1/13 16:19 18


测试了EntityFramework,在分页的时候,用的是类似下面的语句:
C# code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
var query = from m in context.User
            select m;
query = query.OrderBy(item=>item.SeqNum);  //这里得出的query是能够正常按照SeqNum排序的
query = query.Skip(skip).Take(take);  //skip为跳过的记录数(假设为0),take为要取的记录数(假设为10)
//这里得出的query每页是能正常按SeqNum排序,但总体并不会按SeqNum排序


结果可能如下:
第一页:

ID Username CreateTime SeqNum
Guid生成 116 1900/1/13 16:19 1
Guid生成 113 1900/1/13 16:19 2
Guid生成 115 1900/1/13 16:19 4
Guid生成 111 1900/1/13 16:19 6
Guid生成 117 1900/1/13 16:19 7
Guid生成 119 1900/1/13 16:19 8
Guid生成 118 1900/1/13 16:19 9
Guid生成 123 1900/1/13 16:19 14
Guid生成 130 1900/1/13 16:19 15
Guid生成 131 1900/1/13 16:19 18

第二页:

ID Username CreateTime SeqNum
Guid生成 112 1900/1/13 16:19 3
Guid生成 114 1900/1/13 16:19 5
Guid生成 120 1900/1/13 16:19 10
Guid生成 125 1900/1/13 16:19 11
Guid生成 124 1900/1/13 16:19 12
Guid生成 122 1900/1/13 16:19 13
Guid生成 121 1900/1/13 16:19 16
Guid生成 126 1900/1/13 16:19 17
Guid生成 129 1900/1/13 16:19 19
Guid生成 128 1900/1/13 16:19 20

Oracle默认应该是根据一个伪列RowID来排序的。另外还有个RowNum。
怎样才能让排序变正常呢?
第一页的SeqNum应该是1-10,第二页的SeqNum应该是11-20.
Oracle Provider Beta1和Beta2都试过了,一样的结果...

------解决方案--------------------------------------------------------
Try use .ToList()

var query = (from m in context.User
orderby m.SeqNum
select m).ToList().Skip(skip).Take(take);

------解决方案--------------------------------------------------------
.ToList()是非延迟查询操作符 会将数据全都加载到内存中

在DB中数据量到达一定数量级别后 肯定会影响查询性能
------解决方案--------------------------------------------------------
顶一下
------解决方案--------------------------------------------------------
MsSql 应该没问题,不知道是不是 Oracle 的原因。
------解决方案--------------------------------------------------------
我也遇到这问题,难道只能跟ORACLE反映,在下个版本里改了?
哪个大牛来解决下。

原文:http://www.verydemo.com/demo_c158_i21415.html

分享到:
评论

相关推荐

    asp.net知识库

    分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 根据基本表结构及其数据生成 INSERT ... 的 SQL 简便的MS SQL 数据库 表内容 脚本 ...

    java开源包1

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包11

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包2

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包3

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包6

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包5

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包10

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包4

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包8

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包7

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包9

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包101

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    Java资源包01

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    JAVA上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

Global site tag (gtag.js) - Google Analytics