关于百万数据表全表分页查询研究

前言

描述:文本主要用来记录,对大数据量表多表联合的分页查询效率的研究。

一、背景介绍

技术背景:使用若依框架的前后端分离版本开发。
在项目中,有一张预计100w数据量的表,联合其他状态管理表,做分页查询的任务。会导致前端页面的表格刷的非常慢。

二、解决思路

由于项目采用的是 pageHelper第三方的包。该包做分页查询会对sql语句进行封装一层,然后进行 select count(1) { ...} 这会导致查总数的时间花销都好多s了。
于是我变自己封装方法,查询总记录数。然后再传入分页参数,进行分页的查询。虽然还是要1s多,但是总比之前,光查询总数都几十s来的好太多了。

二、二张表的关联手法

1、关联手法1 :使用JOIN

SQL1

	SELECT
    count(1)
FROM
    table_a a
JOIN
    table_status ts
ON a.id = ts.a_id

2、关联手法 :使用 IN

SQL2

SELECT
	count( 1 ) 
FROM
	 table_a a
WHERE
	id IN ( SELECT a_id FROM table_status) 

测试结果:经过多次测试,加上时间查询条件,总共40w条记录。方法二使用In 花了2s多,方法一用join花了1s多。

但是要是添加具体的字段。结果就会反过来,数据量越大,差异越明显。

测试中,查询总记录数40w条,使用IN的方式要花2s多,而使用JOIN方法需要花3s多。
测试sql如下:

<SQL1>+
LIMIT 346190,10

结论

似乎2种方式各有各的特点。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,关于基于Web的分页技术,其主要目的是为了展示大量数据时,将数据进行分页展示,以便于用户查找所需数据。下面我来简要介绍一下分页技术的研究与实现。 1. 分页的原理及常用技术: 首先需要了解的是分页的原理,在Web应用程序中,分页的原理是将大量数据分成多个页面进行展示,上一页、下一页、首页和尾页等按钮可以帮助用户在多个页面之间进行快速切换。分页的实现需要分页算法和分页显示技术,常用的分页显示技术有两种:前端分页和后端分页。 2. 前端分页技术实现: 前端分页是在客户端进行分页操作,将数据从服务器获取到前端,再通过JS等脚本语言实现分页逻辑。前端分页的优缺点如下: 优点: ①从服务器获取的数据较少,对服务器的负载小; ②对用户的响应速度较快,因为仅需要请求当前页面的数据; ③可以提高用户交互性,网页可以更灵活地对数据进行处理。 缺点: ①前端分页需要将所有数据一次性请求到客户端,如果数据量很大,那么会对网络带宽产生较大负担。 ②分页逻辑只能在客户端进行,无法有效控制网络速度等因素的影响,可能会出现分页错误等问题。 3. 后端分页技术实现: 后端分页是在服务器端进行分页处理,将数据通过SQL语句从数据库中取出,再进行分页处理返回给客户端。后端分页的优缺点如下: 优点: ①后端分页是在服务器端进行分页处理,不需要将所有数据一次性请求到客户端,减少网络带宽消耗。 ②分页逻辑在服务器端进行,可以更好地控制分页效果。 缺点: ①对服务器的负载较大,需要对服务器进行优化,否则可能出现网络响应慢等问题。 ②对用户的响应速度较慢,需要请求所有数据后才能开始分页。 以上就是关于基于Web的分页技术的简要介绍,如果您需要更深入地了解分页技术的实现方法,还需要进一步学习相关知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耷腊呜呜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值