关于百万数据表全表分页查询研究
2023-12-28 16:48:32
前言
描述:文本主要用来记录,对大数据量表多表联合的分页查询效率的研究。
一、背景介绍
技术背景:使用若依框架的前后端分离版本开发。
在项目中,有一张预计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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!