• jqgrid使用sql row_number进行分页


    背景

    系统中使用了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,然后就一点点代码搞定!

    总结

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

  • 相关阅读:
    阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API
    阶段3 2.Spring_10.Spring中事务控制_3 作业-基于注解的AOP实现事务控制及问题分析_下
    阶段3 2.Spring_10.Spring中事务控制_2 作业-基于注解的AOP实现事务控制及问题分析_上
    程序员选择字体的标准是
    高通Audio中ASOC的codec驱动(二)
    HashTree【转】
    什么是负载均衡?【转】
    Linux RCU 机制详解
    如何使用C语言的面向对象
    高通HAL层之bmp18x.cpp
  • 原文地址:https://www.cnblogs.com/fenqi/p/5631408.html
Copyright © 2020-2023  润新知