美文网首页
使用JOOQ进行数据分页的优化方法

使用JOOQ进行数据分页的优化方法

作者: 在路上phper | 来源:发表于2018-02-05 14:44 被阅读811次

    上一节我们学习了JAVA里面的ORM框架JOOQ 这节我们使用JOOQ实现以下数据分页
    首先看一张表


    image.png
    image.png

    接下来有这样的需求
    首先我们根据表进行分页


    QQ截图20180205145113.png
    假设每页显示10条数据
    接下来我们在查询分析器里写入sql语句
    取出第一页前10条数据
    image.png

    select * from test_news ORDER BY id DESC LIMIT 0,10;
    还可以这样写select * from test_news ORDER BY id DESC LIMIT 10;
    取出第二页数据


    image.png
    两种方式都可以
    取出第三页数据
    image.png
    以上分页在数据量小的时候可以这样做,如果数据量过大 这样做效率很低
    所以需要对上面的sql语句做些优化
    第一种方法
    通过id加入子查询的方式来进行处理
    我们以第二页为例
    image.png
    三种方式都为取出第二页数据
    下面执行结果1,2,3都是相同的数据
    取出第三页
    image.png

    那么sql语句在java代码中如何写呢
    接下来我们可以来到JOOQ官网 搜索order by 或者 limit关键词
    都有一些示例代码
    接下来我们演示一下
    由于我们创建了一张test_news新表
    需要重新生成一下代码


    image.png
    执行这一句
    image.png
    将代码生成至此目录
    image.png
    由于sql里面需要用到一些函数,所以先看下这张图
    image.png
    接下来在MyDB里测试下代码
    image.png
    运行结果
    image.png
    接下来演示另外一种方法
    实际上我们做前台页面一般不会这样写,因为性能还可以在高一些,可以把查询去掉
    image.png
    可以在第二页传入页码和lastId值 这样sql语句更加简便
    例如
    image.png
    直接给个定值id小于定值 进行查询 更快速
    这种方式需要程序和web页面的参数之间进行配合完成更进一步的优化
    那在JOOQ里面还可以通过下面的方式实现上面的方法 只不过参数需要我们自己传
    image.png
    运行结果
    image.png
    我们还可以得到sql语句 并输出
    image.png
    运行结果
    image.png
    可以看出对基本运算进行了处理(大于 小于等)

    相关文章

      网友评论

          本文标题:使用JOOQ进行数据分页的优化方法

          本文链接:https://www.haomeiwen.com/subject/tjzbzxtx.html