mysql大翻页limt 1700,100慢优化方案
1、引言
公司有个需求,统计短信系统每天status没成功的电话号码,然后进行统计分析。为了省事,我直接用了现成的sql, 该sql是分页,每次筛选limit一百条,最后合并下,最后不就得出所有的手机号了吗?
select id from smss where type='0' and status='0' and ctime >= '2020-03-03 00:00:00' and ctime<= '2020-03-03 23:59:59' order by id desc limit 1800,100
由于这个表是个日志表,相当大,大约有十几亿条数据,翻页是很慢的,及时有ctime限制而且有索引,大约执行了几十秒,后续优化了一把。
2、第一次优化
我想优化方案是
1、取出今天的minid
2、 where id > minid order by id asc limt 100
3、取出上一步筛选出来最大的maxid, minid= maxid再次进入2循环取,直到取不到值为止
问题的关键在于minid开始初值我写的0,为0的话minid条件不命中,条件第二次才会有。造成的慢sql
select id, mobile from sms where type='0' and status='0' and ctime >= '2020-03-04 00:00:00' and ctime<= '2020-03-04 23:59:59' order by id asc limit 100
这条sql的原因在于:ctime这个索引根本不起作用,直接用id进行扫描的,所以执行非常慢。
3、第二次优化
1、minid = select min(id) from sms where type='0' and status='0' and ctime >= '2020-03-04 00:00:00' and ctime<= '2020-03-04 23:59:59' 这个执行很快,ctime有索引
2、select id, mobile from sms where id>minid and type='0' and status='0' and ctime >= '2020-03-04 00:00:00' and ctime<= '2020-03-04 23:59:59' order by id asc limit 100
3、从2中结果取出mobiles放在内存中,同时取出这一批次中最大的maxid, minid = maxid
再次循环2取数据,直到取不到为止,这个就顺利解决了
4、总结
对于大翻页,排序按照区间的最大id为条件,再去请求数据,这样能减少扫描的行数,从而减少sql执行时间。
mysql大翻页limt 1700,100慢优化方案相关推荐
- UE4 Material 101学习笔记——01-07 介绍/PBR基础/UV扭曲/数据类型/翻页动画/材质混合/性能优化
UE4 Material 101学习笔记--01-07 介绍/PBR基础/UV扭曲/数据类型/翻页动画/材质混合/性能优化 Lec 01 什么是着色器 What Is A Shader? 1.1 介绍 ...
- mysql实现翻页功能
1.limit分页公式 1.1 limit分页公式 1.limit分页公式:curPage是当前第几页 上一页:limit (curPage-1)*pageSize,pageSize 下一页:limi ...
- mysql 的翻页查询
前言: 前段时间在写 mybatis-plus 的翻页查询功能的时候突然想到,mysql 语句本身肯定是有翻页查询的功能,所以研究一波. limit 实现翻页 sql 语句还是正常写,但是要在后面加上 ...
- mysql大数据量下的操作以及优化
当我们操作mysql的时候,如果数据量很小,那么我们如何处理都没有问题.但是当一张表非常大的时候,我们一个大查询,一个堆大插入,一个count(*),一个limit都是非常恐怖的,因此,我在下面说几种 ...
- MySQL大数据量分页查询方法及其优化
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:收藏了!7 个开源的 Spring Boot 前后端分离优质项目个人原创+1博客:点击前往,查看更多 链接:ht ...
- 千锋重庆Java学习之MySQL大数据量分页查询方法及其优化
方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适用于数据量较少的情况(元组百/千级) 原因/缺 ...
- T 沙龙移动实践日总结 ——享物说大流量⼩程序的架构与性能优化方案
PPT 和 视频 视频地址 PPT地址 下面是 T 沙龙小编对分享的一些总结: 第一位分享嘉宾是来自享物说的 Rolland Safort(中文名:塞福),目前负责享物说小程序开发工作,有多年前端工作 ...
- mysql show 翻页_mysql show操作
'latin%'; SHOW COLLATION 输出包括所有可用的字符集 SHOW COLLATION; SHOW COLLATION LIKE'latin1%'; SHOW COLUMNS 显示在 ...
- mysql 大分页查询优化_Mysql骚操作:优化大分页查询
背景 系统结构如上图.经过排查是因为系统B拉取数据时间太长导致的推送超时. 系统B拉取数据的方法是根据_tiemstamp(数据操作时间)分页查询系统A的接口,即: 1SELECT 字段名2FROM ...
最新文章
- 关于眼保健操中的轮刮眼眶
- 辽宁学业水平测试 计算机考试,辽宁高中学业水平考试报名系统
- centos 搭建web平台
- iPhone 12机模曝光:继续刘海屏、回归直面边框
- 纤程 java_JAVA协程 纤程 与Quasar 框架
- 【Java】Int类型逻辑运算符的详细描述---含代码
- SVN下载,安装,配置,常用操作 svn教程
- Jupyter的配置
- 按钮、菜单的重绘代码
- 关于未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序的解决办法
- cad插件_抖音最火CAD插件教程汇总
- 头像框DIY制作小程序源码王者吃鸡等气泡头像框在线生成源码
- 购买地铁车票的规定如下: 乘1-4站,3元/位;乘5-9站,4元/位; 乘9站以上,5元/位。 输入乘坐人数(per_num)和乘坐站数(sta_num), 计算购买地铁车票需要的总金额,并将计算结果
- 【附源码】计算机毕业设计java原创网络文学管理系统设计与实现
- Photoshop菜单中英文对照表
- 玩客云刷armbian安装php环境_玩客云刷armbian记录
- 软件体系结构与软件架构解析
- 关于禁止html缓存
- 虚拟机中安装linux系统步骤
- linux系统打开远程端口,linux下3种检测远程端口是否打开的方法
热门文章
- 国科大学习资料--人工智能原理与算法-第十四次作业解析(学长整理)
- V2.0 版本的 《JavaGuide面试突击版》来啦!带着它的在线阅读版本来啦!
- 2016年终总结——学生时代的结束、北漂生活的开始
- python 气泡图 聚类_R可视化 | 气泡图
- 云智巡在连锁药店的巡检作用
- 七月与安生观后感—告别我的27岁
- php 配置 error_reporting,关于php中的错误配置display_errors与error_reporting说明
- 这是我见过最接地气的PCB设计指南了!
- str系列函数详解(包会)
- [笔记]光照系统 实时GI、烘焙GI