【场景题】数据库优化和接口优化——优化深分页问题

深分页问题是什么

深分页问题指的是在数据库查询中,当请求的页码数非常大,即OFFSET(偏移量)数值非常大时,查询性能会急剧下降的问题。
在MySQL等关系型数据库中,深分页查询通常使用LIMIT offset, limit语句来实现,但这种方式在处理大量数据时存在效率问题。因为数据库需要扫描并跳过offset指定的行数,然后返回接下来的limit行数据。随着offset的增大,需要扫描和跳过的行数也越多,导致查询性能显著下降

优化方案

延迟关联

延迟关联法,就是把条件转移到主键索引树,然后减少回表。特别是在偏移量很大时,只加载ID列并使用索引可以快速定位到所需数据。

SELECT user.*  
FROM user  
JOIN (  SELECT id  FROM user  LIMIT 1000000, 10  
) AS subquery ON user.id = subquery.id;

标签记录法

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

SELECT *  
FROM user  
WHERE id > last_id_from_previous_page  
LIMIT 10;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HBM是什么?因AI而崛起,它有哪些优势?

南韩存储大厂SK海力士宣布,将与台积电公司密切合作,联手生产下一代HBM——即预计在2026年投产的第六代HBM产品HBM4,双方并于近期签署合作备忘录(MOU)。 SK海力士以往的HBM产品,包括HBM3E(第五代…

python本学期所有代码!

第一单元 ----------------------------------------------------------------------- #圆面积的计算 radius 25 area 3.1415 * radius * radius print(area) print("{:.2f}".format(area)) --------------------------------------------------------------------…

合并多个静态库为一个静态库或动态库

合并多个静态文件库为一个静态库或动态库 最近打包SDK,需要把多个*.so文件合并。通过google发现,*.so文件不能直接合并,因为其中已经没有重定向信息。但多个静态库文件是可以合并成一个库文件的。 ar命令的参数如下: 参数意义-…

昇思25天学习打卡营第1天|yulang

今天主要了解了深度学习框架之昇思MindSpore的初学入门,没想到 ai学习入门如此简单,不愧是华为大手笔,提供的学习环境配置如此之高。这个平台有点类似百度飞桨,大大降低了AI开发门槛,使用户能够快速实现想要的模型&…

Hadoop3:Yarn的Tool接口案例

一、需求 依然以wordcount案例为基础,进行开发 我们知道,用hadoop自带的example.jar执行wordcount 命令如下 hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount -D mapreduce.job.queuename…

Python编程中的10个令人捧腹的常见错误实例

文末免费赠精品编程资料~~ 在Python的奇妙世界里,学习之旅常常伴随着一些让人啼笑皆非的小错误。这些错误,虽然初看起来令人沮丧,但正是它们,让我们在笑声中学到了不少宝贵的经验。今天,我们就来一起盘点并解析这些Py…

Python高级编程:强化学习基础

Python高级编程:强化学习基础 在前几篇文章中,我们探讨了Python的基础语法、面向对象编程、标准库、第三方库、并发编程、异步编程、网络编程与网络爬虫、数据库操作与ORM、数据分析与数据可视化、机器学习基础、深度学习基础以及自然语言处理。在这篇文章中,我们将深入探讨…

代码随想录算法训练营第五十六天|KMC98 所有可达路径

接下来进入图论环节。需要掌握一定图论基础,有向无向,连接矩阵等。 题1: 指路:98. 所有可达路径 (kamacoder.com) 思路与代码: 1.邻接矩阵 本题我们尝试用深搜解决。首先确定递归函数及参数,定义一个d…

Linux服务器集群搭建

Linux服务器搭建 配置网络和主机名 查看虚拟机虚拟网卡ip信息 在NAT设置中查看网关地址 具体的ip根据网关网段设置 设置root账户密码,越简单越好 修改网卡信息 修改网卡配置,改成静态ip的方式 修改ip为静态方式 修改过后重启网卡服务 关闭防火墙…

如何选择品牌推广公司?哪家好?收费标准及评价!

不管是什么品牌,推广对公司的成败起了很关键的作用。然而,面对市面上琳琅满目的品牌推广公司,如何选择一家既熟悉又靠谱的公司,成为许多企业主面临的难题。 作为一家手工酸奶品牌的创始人,目前全国也复制了100多家门店…

深度探索“目录名称无效“:原因、解决方案与最佳实践

目录名称无效:现象背后的秘密 在日常使用电脑或移动设备时,我们时常会遇到“目录名称无效”的错误提示,这一提示仿佛是一道无形的屏障,阻断了我们与重要数据的联系。从本质上讲,“目录名称无效”意味着系统无法识别或…

Windows下快速安装Open3D-0.18.0(python版本)详细教程

目录 一、Open3D简介 1.1主要用途 1.2应用领域 二、安装Open3D 2.1 激活环境 2.2 安装open3d 2.3测试安装是否成功 三、测试代码 3.1 代码 3.2 显示效果 一、Open3D简介 Open3D 是一个强大的开源库,专门用于处理和可视化3D数据,如点云、网格和…

Android原生与flutter模块交互

Flutter定义了三种不同类型的Channel: BasicMessageChannel:用于传递字符串和半结构化的信息,持续通信,收到消息后可以回复此次消息,如:Native将遍历到的文件信息陆续传递到Dart,在比如&#xf…

无法下载 https://mirrors./ubuntu/dists/bionic/main/binary-arm64/Packages

ubuntu系统执行sudo apt update命令的时候,遇到如下问题: 忽略:82 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/universe arm64 Packages 错误:81 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/main arm64 Packa…

Echarts-饼图

1.案例一 1.1代码 option = { "color":[#3398DB, #FF6347],// 设置整个图表的颜色"title": {//dynamic属性,用于表示标题是否含有动态属性,若有,则使用data-fetch获取动态的标题,此时的text的值为data-fetch的keyword,列名只能为text"dynamic&quo…

springboot数字化医院产科系统源码

目录 一、系统概述 二、开发环境 三、功能设计 四、功能介绍 一、系统概述 数字化产科是为医院产科量身定制的信息管理系统。它管理了孕妇从怀孕开始到生产结束42天一系列医院保健服务信息。该系统由门诊系统、住院系统、数据统计模块三部分组成,与医院HIS、LI…

VMware Mac/Win 虚拟机软件介绍

VMware作为全球领先的虚拟化技术提供商,其Mac/Win虚拟机软件为用户带来了前所未有的跨平台操作体验。这款软件凭借其强大的功能和稳定的性能,成为了众多开发者、设计师、企业用户以及个人用户的首选工具。 强大的多操作系统支持 VMware Mac/Win 虚拟机…

轻松创建对象——简单工厂模式(Python实现)

1. 引言 大家好,又见面了!今天我们要聊的是设计模式中的“万能钥匙”——简单工厂模式。想象一下,如果每次你都得亲自动手创建各种对象,不仅累得像个陀螺,还可能搞得一团糟。别怕,简单工厂模式来拯救你&am…

2024年创业新商机组合拳“消费增值+二二复制”引流拓客新思路

文丨微三云胡佳东,点击上方“关注”,为你分享市场商业模式电商干货。 - 引言:2024年各行各业面临企业经营瓶颈难的一年,国家也陆续推出了《关于打造消费新场景培育消费新增长点的措施》都是为了培育和壮大消费新增长点&#xff…

MySQL生成日期维度表

1、通过存储过程生成 DELIMITER $$ CREATE PROCEDURE dateDim(startDate DATE, endDate DATE) BEGIN DECLARE currentDate DATE; SET currentDate startDate; WHILE currentDate < endDate DO INSERT INTO sys_calendar (stats_day) VALUES (currentDate); SET cur…