MySQL大数据LIMIT优化

Mysql limit 大数据量分页优化方法    比如:同样是取10条数据   select * from 表名 limit 10000,10  和   select * from 表名 limit 0,10  但是我们可以看出这两条的数据量还是相差蛮大的1、 数据量比较小的时候。比如:   select * from 表名 limit 10,10     可以写成如下代码: Select * From 表名Where vid >=(Sel... 阅读详情

问题: 项目每日游戏日志表数据量由原来1w+增长到千万级别,原先获取数据方式:

SELECT * FROM table

一次性取出的数据量太大导致内存溢出。既然一次性取数据不行,那就分次处理~
 
1-1. 使用LIMIT每次取5w条数据

SELECT * FROM table LIMIT 0,50000
SELECT * FROM table LIMIT 50000,50000
...

重新跑了代码,速度很慢,可能是处理数据耗时过长,数据表内有一大部分是此处无用的重复数据,从这入手~
 
1-2. 根据项目情况通过SELECT DISTINCT减少得到的数据量
加上索引后速度不错,但是INDEX_LENGTH大约是DATA_LENGTH的75%左右。
索引占了太大空间,只能另想他法 ╮(╯▽╰)╭
 
发现一个奇怪现象:

SELECT * FROM table LIMIT 0,50000 #速度很快
SELECT * FROM table LIMIT 5000000,50000 #速度很慢


此表有自增id主键,所以使用WHERE条件可以顺利解决~
 
1-3. 通过WHERE条件按自增id取数据

SELECT * FROM table WHERE id > 0 AND id <= 50000
SELECT * FROM table WHERE id > 50000 AND id <= 100000
...


搞定~ 但是还有一个模块需要使用其它查询条件,最终结果id不连续,得另想个办法。
 
基于:

SELECT * FROM table LIMIT 5000000,1 #速度相对较快
SELECT * FROM table LIMIT 5000000,50000 #速度很慢


2-1. 先取第一条id 再通过id与LIMIT取数据

SELECT * FROM table WHERE condition AND id >= (SELECT id FROM table WHRER condition LIMIT 5000000,1) LIMIT 50000

速度提升,但不理想。
 
2-2. 先通过子查询取出id 再通过id取数据

SELECT * FROM table WHERE id IN (SELECT id FROM (SELECT id FROM table WHERE condition LIMIT 5000000,50000) AS tmp)

先通过主键索引找出id,再通过id取数据,测试结果不理想,但是SQL和子查询分开执行,速度ok。
 
2-3. 拆分成两次执行 先取出id 再通过id取数据

SELECT id FROM table WHERE condition #先取出并处理id
SELECT * FROM table WHERE id IN (5000001,5000002,5000003,...)

速度可以接受,使用其它条件不通过索引查询速度相对还会慢一些,模块内每个字段都可以作为组合查询条件,所以没加索引,在项目页面上增加先缩小数据范围再查询的提示,搞定~

mysql大数据量limit优化 在通常的业务场景中,分页一般是使用MySQL提供的 limit 来实现从数据库中获取指定偏移量的数据行。在数据量较小的场景中,并没有太大的问题,但当数据量膨胀到一定程度,获取靠后的分页数据时,性能下降就会特别的大。上面的语句通过先扫描出对应的主键,然后再回表查询出对应的列,极大的减少了MySQL对数据页的扫描。前提条件是在某个有索引的数据列上可以通过计算出对应分页的范围值,且只可根据该索引列排序。上面的查询方式可以延伸出下一页的分页条件使用上一页的索引列最大值。2.优化大偏移量的性能。 阅读详情

相关推荐

“华为”云桌面系统声音比较小,如何调大?

调整操作系统声音 开启云桌面,登录账户之后,进入操作系统,鼠标左键点击右下角的声音图标,把声音调到最大(如下图); 可以考虑使用浏览器在线听音乐,确定声音的音量! 如果只是耳麦声音小,可以鼠标右键点击声音图标,选择录音设备(R),如下图: 点击“录音设备(R)”后进入,鼠标右键点击“麦克风”选择属性,将侦听级别调至最大,确定! 调整华为云终端声音(软设置) 将鼠标移至桌面的顶端中间位置,打开如下图的样式图标,鼠标左键点击“主页”; 点击“主页”之后,将回到云桌面的终端操作界面,

shunchang的专栏 2336

mysql查询速度

问题: 项目每日游戏日志表数据量由原来1w+增长到千万级别,原先获取数据方式:SELECT*FROMtable一次性取出的数据量太大导致内存溢出。既然一次性取数据不行,那就分次处理~1-1. 使用LIMIT每次取5w条数据SELECT*FROMtableLIMIT0,50000SELECT*FROMtableLIMIT50000,50000...重...

weixin_33979363的博客 226

使用Hyper-V使用下载下来的macOS安装引导安装macos

然后关闭工具返回安装界面选择第二个reinstall,选择119g那个硬盘。我的资源上传了:macOS Monterey on Hyper-V.7z。设置固件的启动顺序,引导安装盘放到第一位,mac安装110g放第二。选择disk utility格式化那个110g。下载解压的macos引导挂载到虚拟硬盘。其他设置安全禁用,检查禁用,集成都选中。新建一个虚拟硬盘装mac,110g。

viviliving的专栏 3023

MySQL查询limit 500000, 10和limit 10速度比较

server层会调用innodb的接口,由于这次的offset=500000,会在innodb里的主键索引中获取到第0到(500000 + 10)条完整行数据,返回给server层。server层会调用innodb的接口,在innodb里的主键索引中获取到第0到第10条完整行数据,依次返回给server层,并放到server层的结果集中,返回给客户端。之后根据offset的值挨个抛弃,最后只留下最后面的size条,也就是10条数据,放到serer层的结果集中,返回给客户端。

qq_46130027的博客 995

小红书爬取实战指南

以上方案仅供技术学习参考,请确保遵守目标网站的服务条款和相关法律法规。

monk all the way 6923

mobaXterm连接vmWare虚拟机上的centOS7提示连接失败的解决方法

1.问题描述: mobaXterm安装后连接虚拟机vmWare上的centOS7发现连接不上,如下图所示: 2.解决方法 先是查了一下centOS的ip 开始错误的以为 virbr0: 后面的inet就是虚拟机的IP 实则不然(正确的ip是在ens33后面的inet中的ip,大佬们勿喷) 这个值需要配置一下的,具体配置过程如下: step1: 进入centOS下的/...

hss19214的博客 7890

mysql分页慢如龟速?并不是性能不行而是您使用“姿势”错误!

limit与OFFSET在mysql中可以算是分页神器了,很多分页都是基于这么偏移量实现的。大多数时候是够了,但如果您需要跳转到50000页呢?你会发现这个时间快的“感人...

311

SolidWorks速成教程P3-5【零件 | 第五节】——异形孔向导&线性阵列&镜像

这节介绍异形孔向导、线性阵列、镜像。

嵌入式阿齐Archie 6074

MySql limit优化

首先要说的是在sql语句中,limt关键字是最后才用到的。以下条件的出现顺序一般是:where-&gt;group by-&gt;having-order by-&gt;limit 从中我们可以知道,limit的原理是在经过where、group by、order by、having一系列筛选得出结果后,按照结果的顺序,开始分页取出数据。 比如 &nbsp;&nbsp;&nbsp;&nbsp...

electricight的博客 345

康耐视visionpro-CogBlobTool工具详细说明

康耐视visionpro-CogBlobTool工具详细说明

视觉人机器视觉的博客 1726

⑩电子产品拆解分析-家用无线遥控开关433Mhz

①免布线随意贴,装上就能使用解决单线开关烦恼;②遥控配对简单,无线通讯距离长,信号可穿墙;

a6662580的博客 4694

mysql 大数据量时 limit查询优化

一般,我们在做分页时,用的是语句如下:select * from table LIMIT 5,10; #返回第6-15行数据但是,如果数据量很大,比如&gt;1000万,则利用以上的查询会非常慢,可以利用以下语句进行优化:Select * From table Where ID&gt;=( Select ID From table order by ID limit 90000,1 )li.........

yuan882696yan的专栏 1万+

YOLO26科研升级:OREPA在线重参数化,让模型精度在训练中持续跃升

在目录下,新建AddModules文件夹,将orepa.py放入其中。

LXY_LOVE36的博客 98

MySQL大数据量分页limit优化

limit用法 SELECT * FROM t LIMIT 10,10; 第一个参数指定第一个返回记录行的偏移量 第二个参数指定返回记录行的最大数目 如果只给定一个参数:它表示返回最大的记录行数目 第二个参数为 -1 表示检索从某一个偏移量到记录集的结束所有的记录行 初始记录行的偏移量是 0(而不是 1) 所以上面SQL的含义是查询数据库第10条到第20条数据 对于小的偏移量,直接使用li...

LJJZJ的博客 2016

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

mysql大数据使用limit分页查询优化

mysql大数据使用limit分页查询优化 优化前 我们一般是由limit做查询时的语句为: SELECT * FROM table a LIMIT 1000000, 10 ; 当数据库的数量越大,查询数据越往后时候SQL语句执行的数据将会变得越慢。 优化后 优化后的语句为: SELECT * FROM table t1 RIGHT JOIN (SELECT id FROM table LIMIT 1000000, 1

haohao_ding的博客 727

关于MySQL中查询大数据量的情况下分页limit的性能优化

mysql大数据量使用limit分页,随着页码的增大,查询效率越低下。在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器哦。   当一个表数据有几百万的数据的时候成了问题!   如 * from table limit 0,10 这个没有问题 当 limit 200000,10 的时候数据读取就很慢,可以按照...

张小洛的BOLG 8078

MySql 分页SQL 大数据量limit替代和优化(试验)

参考:https://my.oschina.net/cart/blog/354999 select SQL_NO_CACHE u.id, u.user_id, u.user_name, u.user_name_index, u.email, u.pwd, u.email_token, u.email_active_date, u.real_name, u.real_n

yehuang_0801的博客 2654

mysql的limit优化(大数据量 Mysql limit分页慢的解决办法)

mysql的limit优化(大数据量 Mysql limit分页慢的解决办法) 单表数据量超千万,使用limit 大的话很慢,(aid 做主键索引)SELECT   aid,jid,title,content FROM article_a WHERE aid&gt;='10000000' limit 20执行时间,2~3秒。SELECT aid,jid,title,content FROM ar...

天道酬勤 1029

基于mysql大数据量limit查询优化

今天一个业务场景,定时任务同步全量的历史数据。Java中用一个list去接收sql查询返回的数据。想到list的存储及sql性能瓶颈,于是就需要对数据进行分页查询。 使用得mysql数据,在查询数据库中40w数据时,发现耗时将近4min。其中230s是用在网络传输。 那么此时就需要分页查询。分页查询逻辑也有效率高低,比较好的方法 通过id进行between查询。这种局限于id为自增的表。并且它的每条数据内容都是固定的。如果中间有其实id不是连续的,那么中间这个基数就很难定义。比如我数据库最小的id

weixin_42740540的博客 691

mysql limit优化_MySQL大数据量分页查询方法及其优化

点击上方好好学java,选择星标公众号重磅资讯、干货,第一时间送达今日推荐:收藏了!7 个开源的 Spring Boot 前后端分离优质项目个人原创+1博客:点击前往,查看更多链接:https://www.cnblogs.com/geningchao/p/6649907.html方法1: 直接使用数据库提供的SQL语句语句样式: MySQL中,可用如下方法: SELECT *...

weixin_39769091的博客 114

分页查询实战:MySQL LIMIT 优化,解决大数据量分页卡顿问题

《MySQL大数据量分页优化方案》针对传统LIMIT分页在大偏移量时性能低下的问题,提出了三套优化方案:1)主键索引分页,利用自增主键有序性直接定位数据,适合连续分页场景;2)子查询优化,先通过索引获取ID再关联查询,减少回表开销,支持跳页;3)覆盖索引分页,建立复合索引避免回表操作。文章强调开发规范,包括禁用SELECT*、必须建立排序字段索引、限制大偏移量查询等,并针对不同数据规模推荐相应方案:千条内用普通LIMIT,万级用子查询,百万级用主键分页,超大数据建议游标读取或导出处理。

2402_87794035的博客 229

mysql大数据量之limit优化

背景:当数据库里面的数据达到几百万条上千万条的时候,如果要分页的时候(不过一般分页不会有这么多),如果业务要求这么做那我们需要如何解决呢?我用的本地一个自己生产的一张表有五百多万的表,来进行测试,表名为big_data;首先我们看如下几条sql语句:在这之前我们开启profiling来监测sql语句执行的情况。set profiling=1;1.查询从第10w条数据开始分页10条2.查询从第20w...

weixin_30609331的博客 188

mysql limit 大数据量分页优化方法

Mysql的优化是非常重要的。其他最常用也最需要优化的就是limit。Mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。   同样是取10条数据   select * from yanxue8_visit limit 10000,10 和   select * from yanxue8_visit limit 0,10  就不是一个数量级别的。 ...

天道酬勤 309

MySQL的limit优化

MySQL的limit优化

京北游戏官方 2万+
上一篇: golang并发编程
下一篇: 简单理解Socket及TCP/IP、Http、Socket的区别
csdn265
博客等级 码龄11年 109粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值