前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL-字节千万级数据分页查询优化方案

MySQL-字节千万级数据分页查询优化方案

作者头像
公众号 云舒编程
发布于 2024-01-25 07:56:34
发布于 2024-01-25 07:56:34
37200
代码可运行
举报
文章被收录于专栏:图解系列图解系列
运行总次数:0
代码可运行

一、MySQL分页查询优化(基于limit offset,size)

1、表结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table `test`(
  `id` int(11),
   `className` varchar(255) NOT NULL comment `班级名`,
   `name` varchar(255) NOT NULL comment `学生姓名`,
   primary KEY (`id`),
   KEY idx_className(`className`) USING BTREE
)

插入一千万条数据到表中,保证className相同的数据至少有100万条。

2、直接查询

直接分页查询耗时70s

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from test where class_name = "班级一" limit 900000,10;

mysql执行计划,的确用到了索引,但是查询耗时长达70s。

一般分页查询有两种做法:

1、先查询出90万+10条记录的id,回表查询数据,再将90万+10条完整记录发给MySQL以便筛选最后10条; 2、先查询出90万+10条记录的id,筛选出最后10条记录的id再回表查询,最后返回10条完整记录给MySQL。 在回表次数很多(limit决定)的情况下,显然第二种方法是比较快的,但是MySQL默认采用了第一种。

3、优化方案

很明显mysql默认的limit处理方式问题在于回表次数太多了,那么如果降低了回表次数(减少IO次数),性能是否提升呢?

3.1、通过利用覆盖索引直接获取id,这里可以直接走索引,性能较高。再将筛选完的id到主键索引查询。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from test as t1 inner join (select id from test where class_name = "班级一" order by id desc limit 900000,10) t2 USING(id);

优化后的效果显著:从70秒变为了0.47秒。

3.2、利用上一次的最大id筛选数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//上图的最大id是 998507,查询时让id > 998507,再直接limit 10就可以得到第91万页了
select * from test where class_name = "班级一" and id > 998507 limit 10;

查询效率依旧很快,0.01秒返回结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
游戏建模经验分享:模型学习方法
最近通过很多师弟的交流,我发现游戏建模初学者大多存在三个大问题,一是工具的使用不够熟练,甚至有些功能还不知道,二是对布线的规范没有太大的要求和了解,三是对游戏制作流程不清晰和板绘下的功力不够,对贴图制作用工少,甚至有些人还处于一直做白膜的阶段
全栈程序员站长
2022/08/30
3010
游戏建模经验分享:模型学习方法
3d游戏建模全解[通俗易懂]
目前市面上随着3D游戏的兴起和VR的盛行,越来越多人对网络游戏越来越热衷,3D游戏建模设计师的需求也越来越广泛,市场缺口大,人才需求供不应求。
全栈程序员站长
2022/08/26
1.1K0
3d游戏建模全解[通俗易懂]
如何快速学从零开始学习3d建模?
大家好,又见面了,我是你们的朋友全栈君。 其实对于初学者来说,3D建模是一个专业性偏强且极其难入手的游戏制作专业技术。如果是无基础从零开始的学习的话,没有一个好的学习方法和好的指导老师的话,还是比较困
全栈程序员站长
2022/08/19
1K0
如何快速学从零开始学习3d建模?
3D建模大神都在用的学习技巧!
整个互联网的形态一直以来都是2D模式的,但是随着3D技术的不断进步,在未来的5年时间里,将会有越来越多的互联网应用以3D的方式呈现给用户,包括网络视讯、电子阅读、网络游戏、虚拟社区、电子商务、远程教育等等。甚至对于旅游业,3D互联网也能够起到推动的作用,一些世界名胜、雕塑、古董将在互联网上以3D的形式来让用户体验,这种体验的真实震撼程度要远超2D环境。我们所接触到的游戏建模,室内建模,数学建模等,包括现在很流行的电子商务,都对3D模式有着很强的需求,可见,未来市场对3D建模这一技术的渴望程度。
全栈程序员站长
2022/08/30
6140
3D建模大神都在用的学习技巧!
3D建模软件中涉及的技术
3D建模可使用建模软件,常用的通用商业3D软件有3Dmax以及Maya,cad 软件有autocad、solidworks、sroe。上面这两类3D软件都可输出3D模型,并导入到ThingJS平台使用。接下来我们来看建模软件中涉及的技术。熟悉了这些,即使你不是专业的3D可视化开发工程师,你是前端工程师,掌握Javascript 语言,便能够在ThingJS平台上自由创作。
要不要吃火锅
2019/10/24
2.4K0
新人如何入行3D游戏建模
所有行业都是一样的,没有什么容易的,只不过这一行是偏向于技术的,一个有好的建模师月薪10k+是很常见的,这个需要有自己刻苦学习的成果。 游戏建模前景在游戏模型行业,你基本不用担心找不到工作,因为游戏模型师人才缺口非常大。举个例子:游戏制作公司的人员配比大多数是这样的:比如100人的三维制作组,可能有60人在做模型贴图,10个人在K动画。只要你保证技能在手,一定是抢手的人才。在几年前游戏建模这个行业不仅仅缺人才,甚至连新手都非常稀缺,那个时候公司愿意招聘实习生,培养他们然后给公司干活,但是工资一定不会给开的很高,所以这些人全部跳槽了,成本牺牲太大。虽然到了今天转行做游戏建模的非常多,新手爆满,但是公司招聘一个有开发经验的人还是非常的难,现在的行情不会还像几年前一样,指望自学几个月还还有很多公司要你,现在公司都是要直接能干活,真正掌握技术的人。
全栈程序员站长
2022/08/26
6550
新人如何入行3D游戏建模
浅谈三维激光点云建模
传统倾斜摄影建模对建筑物复杂区域会出现大面积拉花现象,这是难以避免的。也是光学影像建模的劣势。而结合激光雷达电云建模,可以赋予模型更精细的纹理,再加上原本倾斜摄影的贴图,可以达到精细化建模的成果。
陈南GISer
2024/04/30
1.1K0
浅谈三维激光点云建模
游戏模型建模中使用3DMAX的问答总结
很对小伙伴在进行游戏模型建模中,使用3DMAX都有很多问题。这些问题有一些非常经典,因为很多人都曾遇到过。在此我把这些问题整理出来,希望对于刚接触游戏模型建模的小伙伴有所帮助。
边禾
2018/09/05
1.3K0
游戏模型建模中使用3DMAX的问答总结
Autodesk 3dmax 2023.1【附激活补丁+安装教程】中文免费版下载
3DMAX2023是Autodesk公司最新开发的一款三维建模渲染制作软件。我们可以使用该软件完成工业设计、建筑设计、多媒体制作、游戏开发等工作。3DMAX2023百度云还添加了多种丰富灵活的工具,让您可以提高工作效率。3DMAX2023知识兔版还具有非常强大的三维渲染功能,我们可以利用这个软件来完成已经设计好的三维模型的渲染操作,使模型效果变得更加逼真。3DMAX2023知识兔百度云可用于广告、影视、游戏、建筑、工业等不同领域哦!3DS Max是一个强大的3D建模和动画解决方案,游戏开发者,视觉效果艺术家和图形设计师使用,以创建庞大的世界,惊人的设置,和迷人的虚拟现实(VR)体验。
用户10122115
2022/11/13
2.5K0
虚实之间02 | 构建虚拟数字人的第一步居然需要……降维打击?
构建虚拟人数字的第一步需要进行前期的形象设计以及建模。2D数字虚拟人需要原画等形象设计,3D数字虚拟人需要额外使用三维建模技术生成数字形象,无论是基于IP或者真人设计,都需要进行面部以及身体的建模。高保真建模会带来更好的交互体验,也会避免恐怖谷效应的出现。
GIAIAC
2022/06/27
7920
虚实之间02 | 构建虚拟数字人的第一步居然需要……降维打击?
手把手教你制作机房三维场景(3D效果图)
随着信息技术的不断发展,大量数据中心机房的建设、监控软件已经成为机房管理者的重要武器,特别是机房效果图这一块,从简易的CAD到现在的3D效果图,从静态到三维动态的改进,机房监控软件基本上可以说是从无到有的一个过程,下面本文跟大家分享机房高大上的数据中心三维可视化管理软件的三维场景制作过程(俗称:3D效果图的制作过程)。
全栈程序员站长
2022/09/05
4.8K0
手把手教你制作机房三维场景(3D效果图)
Unity3d场景快速烘焙【2020】
很多刚刚接触Unity3d的童鞋花了大量的时间自学,可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来,又陷入另一个新的坑,每次烘焙一个场景少则几个小时,多则几十个小时,机器总是处于假死机状态,半天看不到结果,好不容易烘焙完了,黑斑、撕裂、硬边、漏光或漏阴影等缺陷遍布,惨不忍睹,整体效果暗无层次,或者苍白无力,灯光该亮的亮不起来,该暗的暗不下去,更谈不上有什么意境,痛苦的折磨,近乎失去了信心,一个团队从建模到程序,都没什么问题,可一到烘焙这一关,就堵得心塞,怎么也搞不出好的视觉效果,作品没法及时向用户交付,小姐姐在这里分享一些自己的经验,希望能帮到受此痛苦折磨的朋友,话不多说,开工!
全栈程序员站长
2022/07/01
4.4K0
Unity3d场景快速烘焙【2020】
游戏场景建模用什么软件?
ZBrush:高模的制作软件,用ZB做角色是很很好的,可是难度系数也挺大,平常要多看看人体的构造,或 找人体写真来把控不一样的人体肌肉转变,多了解多实践。
全栈程序员站长
2022/08/31
2.3K0
影视3D建模和游戏3D建模差异,哪个更有前景?
影视3D建模和游戏3D建模,两者之间最大和最明显的差异是:游戏开发永远有多边形建模预算。影视建模方面,对于多边形数量都没有限制。
全栈程序员站长
2022/08/31
1.3K0
影视3D建模和游戏3D建模差异,哪个更有前景?
玩转C4D丨3D视觉设计必备指南
导语 随着三维视觉逐渐向二维视觉领域渗透,视觉3D化已经成为当下非常热门的一种表现形式 3D技能也已经加入了视觉设计师必备技能包中。如今市面上也有很多3D软件可供设计师进行选择,如3D MAX,MAYA,犀牛等,这些软件在动画,工业设计,游戏等领域,确实有着非常完善的工作流,但是对于从来没接触过3D领域的视觉设计师来说上手难度相对比较高,它们适合更垂直领域的使用人群。 而C4D作为3D软件后起之秀,以其强大的兼容性,易上手的操作模块,超拟真的物理模拟解算等,深得视觉设计师的喜爱,无论是运营,UI,
腾讯ISUX
2021/12/28
1.8K0
从入门到实战丨C4D自学必备指南
导语 近年三维表现已经越来越多的融入到各种商业设计当中,在电商、品牌、UI、影视等各个领域都有广泛的运用。其中一个关键因素是C4D这款软件的出现,大大降低了3D设计的学习门槛。 C4D相对于专业性更强、功能较为复杂的3DMax、Maya、ZBrush等软件,界面更加简洁友好,对于没有接触过3D的的小白,学习成本更低。配合Octane、Redshift等渲染器,可以很快做出强视觉表现力的效果。凭借这种操作友好、易出效果的特性,C4D很快成为了近年最流行的3D设计软件之一。 本文结合作者自身的经验整理了一波自学
腾讯ISUX
2023/02/03
1.4K0
从入门到实战丨C4D自学必备指南
iPad 建模 | 三维形象创意指南
一、序言 3D设计风格已经在越来越多的设计领域被广泛应用,其视觉表现和设计技法,也随着行业发展在不断进化演变着。我们可以发现,今天的3D设计已不仅是“立体感”和“真实性”的代名词,三维设计作品,已进化表现为更细腻多元的质感、更精致的高维建模、更丰富的色彩表现、以及更具艺术性的设计语言。但这些更成熟的表现通常对设计师具有很高的要求,也需要花费很大的精力时间去调试。如果你不是一个专业三维设计师,但却很想涉及这个领域,通常会被各种3D软件、渲染器、以及超高的硬件配置等较高门槛而劝退,或是花费很长时间去学习。但是,
腾讯ISUX
2022/12/24
1.5K0
iPad 建模 | 三维形象创意指南
如何搭建3D虚拟数字人自动捏脸系统
随着数字人产品不断的迭代和发展,对于用户来说,属于自己的个性化的数字人不可或缺,在数字人产品中常见的3D数字人个性化设定的方式主要由3种进行捏脸,模板选择方式、自由调整方式、自动捏脸。首先简单介绍一下模板选择和自由调整方式后,再详细介绍自动捏脸。01
产品言语
2023/09/09
1K0
如何搭建3D虚拟数字人自动捏脸系统
(一) 3D图形渲染管线
渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景(如图1):
bering
2019/12/02
1.5K0
CPU显卡内存与3DMAX渲染的关系
图形渲染CPU重要还是显卡重要?3D渲染、三维建模速度和显卡有关吗?三维制图电脑配置!3D设计用什么显卡
py3study
2020/01/09
3.6K0
推荐阅读
相关推荐
游戏建模经验分享:模型学习方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验