背景

系统中使用了jqgrid的展示,现在要处理10w+的数据量

现状

使用了全查询的,查询到了10w+的数据放到了datatable中,每次页面刷新需要9秒多,并且传递给另一个dll来处理一些事情。偶尔会出现StackOverFlow的异常问题,但是频率较大。

分析

现有的就有两个问题需要解决:

  1. 性能问题
  2. StackOverFlow的异常问题
起始

性能问题经过调查,sql语句查询完成之后至少4秒钟左右,因为是全查询,所以把尽力的条件都做了,效果不明显。

然后考虑用sql server的row_number函数进行直接分页,不依赖jqgrid本身的分页机制,由于每次分页只有几十条,所以速度非常的快,基本上就是秒查,==> 为什么差距这么大?这块我认为是查询的时候非常的快,sql 返回数据展示部分就会非常的大,毕竟使用row_number函数是需要给每一条数据进行标号码的,之后为了验证自己的猜想,未使用分页使用了top 20的条件查询,速度也是秒查,所以至少一半认为是大数据量返回时会耗时(这个不能解释为什么sql语句复杂查询的时候,返回结果只有非常少的数据量时,耗费时间也非常的严重)

在使用了几十条的返回结果时,StackOverFlow的问题也会得到解决。

歧途

之后在使用jqgrid的时候,之前jqgrid本身根据数据量的多少进行分页等一系列自动操作,现在直接绑定的数据源就是分好页的,自己尝试自己付页码和总条数没有找到属性等。

之后查询jqgrid的文档,发现js办的jqgrid是有这种功能的,数据源自己分页,然后返回总条数等就可以了。

自己怨念很深,查询trirand的asp.net使用jqgrid的时候,没有仔细看文档,虽然发现了示例,但是没有看c#的代码,一直以为是数据源的sql语句jqgrid会自动分页,所以速度很快。

心塞

之后自己写了分页的代码,然后插入了10w+的空白然后进行jqgrid绑定,然后遇到的排序的问题,自己又写了大段的代码进行jqgrid的原理适配,最终还是还有非常大的问题,遂决定放弃代码优化。

解决

之后还是看着trirand的示例网页,把所有的内容都读了一遍,发现了自定义的分页方法DataRequesting,然后就一点点代码搞定!

总结

如果是第三方控件之类的,一定要仔细读帮助手册。

jqgrid使用sql row_number进行分页的更多相关文章

  1. SQL ROW_NUMBER() 通用分页存储过程

    --提取分页数据,返回总记录数 Create procedure [dbo].[sp_Common_GetDataPaging_ReturnDataCount] ( @SqlString varcha ...

  2. 使用SQL Server 2005 新的语法ROW_NUMBER()进行分页的两种不同方式的性能比较

    相比在SQL Server 2000 中使用的分页方式,在SQL Server 2005中使用新的语法ROW_NUMBER()来分页效率要高出很多,但是很多人在使用ROW_NUMBER()这种分页方式 ...

  3. SQL Server的分页优化及Row_Number()分页存在的问题

    最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...

  4. 在论坛中出现的比较难的sql问题:5(row_number函数 分页、随机返回数据)

    原文:在论坛中出现的比较难的sql问题:5(row_number函数 分页.随机返回数据) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. 1.在inner join后, ...

  5. 浅谈SQL Server数据库分页

    数据库分页是老生常谈的问题了.如果使用ORM框架,再使用LINQ的话,一个Skip和Take就可以搞定.但是有时由于限制,需要使用存储过程来实现.在SQLServer中使用存储过程实现分页的已经有很多 ...

  6. 【SQL】Oracle分页查询的三种方法

    [SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...

  7. hibernate 对 sql server 2005 分页改进

    Hibernate 可以实现分页查询 如下 Query q = session.createQuery("from Cat as c"); q.setFirstResult(100 ...

  8. Sql Service存储过程分页

    一起是用oracle数据库..感觉oracle数据库强大.查询速度是杠杠的.换了家公司用的是SQL SERVICE.以前用了1年现在捡回以前的记忆.动手写了动态SQL过存储过程分页.感觉和oracle ...

  9. row_number() over()分页查询

    1.首先讲下row_number() over() 是干什么的? 是一个分析函数,会在数据表生成一个排序列. 案例SQL: select ROW_NUMBER() over(order by book ...

随机推荐

  1. PLS-00215:字符串长度限制在范围

    在Oracle中有一张people表 创建跟新表的存储过程 修改定义字段长度 总结:在Oracle中执行存储过程时,输出参数的长度要与原表中字段长度一致!

  2. Trainning Guide, Data Structures, Example

    最近在复习数据结构,发现这套题不错,题目质量好,覆盖广,Data Structures部分包括Example,以及简单,中等,难三个部分,这几天把Example的做完了, 摘要如下: 通过这几题让我复 ...

  3. movzbl和movsbl

    汇编语言中最最常用的指令 -- 数据传送指令,也是我们接触的第一种类别的汇编指令.其指令的格式为:“mov 源操作数, 目的操作数”.mov系列支持从最小一个字节到最大双字的访问与传送.其中movb用 ...

  4. centos下apache+mysql+php安装及配置

    今天难得休闲,自从加盟当前公司以来好像就基本没有写过博客了.难得闲下来和前同事聊天,他们几个人合伙买了VPS在用.这对我们搞WEB开发的童鞋来说是非常重要的,我来这家公司有许久了,但是竟然到现在连一台 ...

  5. 利用CodeIgniter中的Email类发邮件

    CodeIgniter拥有功能强大的Email类.以下为利用其发送邮件的代码. 关于CI的Email类的详情请参考:http://codeigniter.org.cn/user_guide/libra ...

  6. 函数buf_LRU_search_and_free_block

    /******************************************************************//** Try to free a replaceable bl ...

  7. 最受 Web 开发者欢迎的 NoSQL 和关系数据库

    Web应用离不开数据库,目前市场上有种类繁多数据库可供开发者选择,例如SQL.NoSQL.键值.图谱数据库等等.关于不同数据库在开发者中的受欢迎程度也是仁者见仁智者见智,但是通过统计亚马逊这样的公共云 ...

  8. LeetCode Excel Sheet Column Title (输出excel表的列名称)

    题意:给一个数字n,输出excel表的列名称. 思路:其实观察可知道,是个26进制的标记而已.那就模拟一下,每次计算一位时就先左移1位,再进行计算. class Solution { public: ...

  9. apache开源项目--OpenMeetings

    OpenMeetings是一个多语言可定制的视频会议和协作系统.它支持音频.视频,能让你查看每个与会者的桌面.OpenMeetings还包含一个白板,通过白板可以导入各种格式的图片和涂鸦. 在线演示: ...

  10. Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用

    Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用 在串口编程模式下,open未设置O_NONBLOCK或O_NDELAY的情况下. c_cc[VTIME]和c_cc[VMIN] ...