首页 > 其他分享 >跨库跨表分页

跨库跨表分页

时间:2024-11-29 17:13:45浏览次数:4  
标签:分页 跨库 查询 跨表 limit test order id select

概述

随着数据量增多,势必会进行分库分表。假设 test 表有数据 [1,2,3,4,5,6,7,8],在单库的时候,查询第 2 页数据并且显示 2 条,语句是这样的:

select * from test  order by id limit 2 offset 2

数据返回 [3,4],但是数据切分以后,这条语句就会有问题,例如节点 1 保存 [1,3,5,7],执行返回 [5,7],节点 2 保存 [2,4,6,8],返回 [6,8],然后排序取前两条返回 [5,6],可以看到此结果与实际结果不一致


全局查询法

将上例 sql 语句改写成:

select * from test  order by id limit 4 offset 0;

因为切分后数据的索引变得更靠前了,所以要把所有数据都找出来,然后合并排序,再分页查询,然而随着页码增大,查询的压力也会增大


禁止跳页查询法

在数据量很大,翻页数很多的时候,很多产品并不提供“直接跳到指定页面”的功能,而只提供“下一页”的功能

假设 db1 中值为【2、4、6、8】,db2 中值为【1、3、5、7】,根据 id 进行排序,返回对应的条数,在内存中对各个节点返回的数据进行排序,得到需要的数据,执行以下语句,查询第一页数据,返回结果集为【1、2】

select * from test where id>0 order by id limit 2;

在查询第二页时,要根据上一页的 id 的最大值 id_max(第一页的最大 id_max 为 2),作为第二页的最小值,那么会将如下语句

select * from test  order by id limit 2,2;

改写成

select * from test where id>2 order by id limit 2;

这样不会随着页数的增大而影响查询性能,但无法跳页查询

标签:分页,跨库,查询,跨表,limit,test,order,id,select
From: https://www.cnblogs.com/Yee-Q/p/18577129

相关文章

  • 跨表显示公式的结果
    表1和表2在表1的c2单元格里,求小一班里的最大成绩,写公式  =MAX(IF(Sheet2!$B:$B=$A2,Sheet2!$E:$E))解释=max求最大的(条件范围如果(表2的B列班级列等于表1的A2单元格内容班级名称,最终目的是求成绩列的最大))在表1的E2单元格里,求小一班里第二成绩,写公式=LARGE(IF(Sheet2!$B:$B=......
  • 请求分页管理方式
    请求分页管理方式‍​​‍一、页表机制的不同与基本分页存储管理的页表区别:​​‍二、缺页中断机构在请求分页系统中,每当要访问的页面不在内存时,便产生一个缺页中断,然后由操作系统的缺页中断处理程序处理中断。此时缺页的进程阻塞,放入阻塞队列,调页完成后再将其唤醒,放回......
  • 基本分页存储管理的基本概念
    基本分页存储管理的基本概念(前言:概念特别多,注意理解和区分)​​‍一、概念(一)页和页框(易混淆)分页存储:将内存空间分为一个个大小相等的分区,每个分区就是一个“页框”。每个页框有一个编号(“页框号”),页框号从0开始。将某进程的逻辑地址空间也分为与​页框大小相等的一个个部分......
  • 面试官:说一下 MyBatis 的 3 种分页方式?
    分页是我们在开发中绕不过去的一个坎!当你的数据量大了的时候,一次性将所有数据查出来不现实,所以我们一般都是分页查询的,减轻服务端的压力,提升了速度和效率!也减轻了前端渲染的压力!注意:由于java允许的最大整数为2147483647,所以limit能使用的最大整数也是2147483647,一次性取......
  • 强大的jquery下拉分页选择插件SelectPage
    SelectPage.js是一款强大的jquery下拉分页选择插件。SelectPage.js下拉分页选择插件界面简洁,支持下拉,分页,键盘操作等功能。它的特点还有:在线演示  下载 插件基于jQuery开发,可在Bootstrap2、3环境下使用,亦可在原生无UI框架的环境下直接使用。兼容Bootstrap2、3样式,以及非......
  • .NET9 EFcore支持早期MSSQL数据库 ROW_NUMBER()分页
    前言NET程序员是很幸福的,MS在上个月发布了NET9.0RTM,带来了不少的新特性,但是呢,我们是不是还有很多同学软硬件都还没更上,比如,自己的电脑还在跑Win7,公司服务器还在跑MSSQL2005-2008的!这不就引入了我们本文要探索的问题,因为MS早在EFcore3.1后就不再内置支持ROW_NUMBER()了,......
  • 自定义MyBatis分页插件和自定义慢SQL统计插件实践
    ......
  • element-plus教程:Pagination 分页
    软考鸭微信小程序:助力软考备考的便捷工具一、基础用法Pagination分页组件允许用户通过点击页码或输入页码来浏览不同的数据集。当数据量过大时,使用分页可以分解数据,提高页面的加载速度和用户体验。<template><el-paginationlayout="prev,pager,next":tot......
  • MyBatis——分页插件(重要)
    目录(一)分页的计算方式(二)添加依赖(三)配置分页插件 (四)分页插件的使用1.PageHelper.startPage(intpageNum,intpageSize)2.PageInfo获取分页相关数据(一)分页的计算方式limit index,pageSizeindex:当前页的起始索引pageSize:每页显示的条数pageNum:当前页......
  • FDQuery的分页
    分页方法,其中PageSize为分页大小,PageIndex页码,0为第一页,RecsSkip可以通过 PageSize*PageIndex计算出来,如下: procedureTForm1.PagingQuery(Query:TFDQuery;PageSize,PageIndex:Integer);beginQuery.Disconnect;Query.FetchOptions.RecsSkip:=PageSi......