首页 > 其他分享 >深分页查询慢问题

深分页查询慢问题

时间:2022-11-18 12:59:20浏览次数:72  
标签:10 acct1 分页 create 主键 问题 100000 查询 id

深分页:分页太多,越往后的页数查询越慢。

例如:

select id,name,balance from account where create_time> '2020-09-19' limit 100000,10;

limit 100000,10意味着会扫描100010行,丢弃掉前100000行,最后返回10行。即使create_time,也会回表很多次。

我们可以通过标签记录法和延迟关联法来优化深分页问题。

1.标签记录法

就是标记一下上次查询到哪一条了,下次再来查的时候,从该条开始往下扫描。就好像看书一样,上次看到哪里了,你就折叠一下或者夹个书签,下次来看的时候,直接就翻到啦。

假设上一次记录到100000,则SQL可以修改为:

select  id,name,balance FROM account where id > 100000 limit 10;

这样的话,后面无论翻多少页,性能都会不错的,因为命中了id主键索引。但是这种方式有局限性:需要一种类似连续自增的字段。

2.延迟关联法

延迟关联法,就是把条件转移到主键索引树,然后减少回表。优化后的SQL如下:

select  acct1.id,acct1.name,acct1.balance FROM account acct1 INNER JOIN (SELECT a.id FROM account a WHERE a.create_time > '2020-09-19' limit 100000, 10) AS acct2 on acct1.id= acct2.id;

优化思路就是,先通过idx_create_time二级索引树查询到满足条件的主键ID,再与原表通过主键ID内连接,这样后面直接走了主键索引了,同时也减少了回表。

参考:https://mp.weixin.qq.com/s/DGP1frbIlirZ_C8Vd0OmEA

标签:10,acct1,分页,create,主键,问题,100000,查询,id
From: https://www.cnblogs.com/super-chao/p/16902823.html

相关文章

  • 两个.bashrc文件配置问题
    目录​​问题:​​​​解决办法:​​当我用fireflyrk3328开发板用ros进行主从机通讯的时候,需要更改.bashrc文件的配置进行主从机通讯,但是却发现有两个.bashrc文件,那么该如何......
  • 0-1背包问题小结
    使用二维数组的情况先直接上代码。#include<iostream>#include<vector>//bits/stdc++.h文件在实际开发中不要使用//在VScode中似乎已经限制了bits/c++.h的使用。//#......
  • 【快应用】折叠屏手机打开快应用页面重新加载问题
    ​问题背景:折叠屏手机展开或者折叠时,快应用会重新加载页面,效果和初次进入当前页面相同,会回调生命周期函数onInit、onReady、onShow,通过页面调整传递的参数依然可以获取。......
  • 关于一个问题的证明
    \(10^{l+c}=10^c(\mathrm{mod}\b)\),\(10^c(10^l-1)=0(\mathrm{mod}\b)\)。又\(10^l=1(\mathrm{mod}\b')\),所以\(10^l-1=k_0b'\)。代入上式,所以\(10^c(k_0b')=k......
  • 360度评估中的问题示范:如何提问
    360度评估通常会向北评估人提出一系列的问题,而答案是在一个评分表上。它让管理者有机会从前辈、后辈和同龄人那里获得360度员工反馈。360调查甚至可能有开放性的问题,让受访......
  • 每日算法之跳台阶扩展问题
    JZ71跳台阶扩展问题描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。数据范围:1\len\l......
  • 关于前后端分离 跨域的问题之出现两次请求的问题(preflight预检)
    由于浏览器的同源保护需要,第一次请求(请求类型options)到服务器去验证到不到响应就无法通过验证所以需要对客户做一个正常响应(意思就是输出给浏览器,就是空内容)第二次才是......
  • C语言交通查询系统
    C语言交通查询系统数据结构实验周任务书1.设计目的:数据结构实验周课程设计旨在培养学生运用数据结构的相关知识和理论解决计算机建模的能力,具备良好的数据结构建模的思想......
  • 博弈论练习8 Northcott Game(取石子问题)
    题目链接在这里:I-NorthcottGame_牛客竞赛博弈专题班组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏习题(nowcoder.com)这题是一个伪装的很好的取石子问题,可以发现,一个......
  • 整数划分问题
    Description 用一系列正整数之和的表达式来表示一个正整数,称为整数的划分,例如6可以划分为:65+14+2,4+1+13+3,3+2+1,3+1+1+12+2+2,2+2+1+1,2+1+1+1+11+1+1+1+1+1总......