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

发布时间:2023年12月28日

前言

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

一、背景介绍

技术背景:使用若依框架的前后端分离版本开发。
在项目中,有一张预计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种方式各有各的特点。

文章来源:https://blog.csdn.net/weixin_43976226/article/details/135271424
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。