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慢优化方案相关推荐

  1. UE4 Material 101学习笔记——01-07 介绍/PBR基础/UV扭曲/数据类型/翻页动画/材质混合/性能优化

    UE4 Material 101学习笔记--01-07 介绍/PBR基础/UV扭曲/数据类型/翻页动画/材质混合/性能优化 Lec 01 什么是着色器 What Is A Shader? 1.1 介绍 ...

  2. mysql实现翻页功能

    1.limit分页公式 1.1 limit分页公式 1.limit分页公式:curPage是当前第几页 上一页:limit (curPage-1)*pageSize,pageSize 下一页:limi ...

  3. mysql 的翻页查询

    前言: 前段时间在写 mybatis-plus 的翻页查询功能的时候突然想到,mysql 语句本身肯定是有翻页查询的功能,所以研究一波. limit 实现翻页 sql 语句还是正常写,但是要在后面加上 ...

  4. mysql大数据量下的操作以及优化

    当我们操作mysql的时候,如果数据量很小,那么我们如何处理都没有问题.但是当一张表非常大的时候,我们一个大查询,一个堆大插入,一个count(*),一个limit都是非常恐怖的,因此,我在下面说几种 ...

  5. MySQL大数据量分页查询方法及其优化

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:收藏了!7 个开源的 Spring Boot 前后端分离优质项目个人原创+1博客:点击前往,查看更多 链接:ht ...

  6. 千锋重庆Java学习之MySQL大数据量分页查询方法及其优化

    方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适用于数据量较少的情况(元组百/千级) 原因/缺 ...

  7. T 沙龙移动实践日总结 ——享物说大流量⼩程序的架构与性能优化方案

    PPT 和 视频 视频地址 PPT地址 下面是 T 沙龙小编对分享的一些总结: 第一位分享嘉宾是来自享物说的 Rolland Safort(中文名:塞福),目前负责享物说小程序开发工作,有多年前端工作 ...

  8. mysql show 翻页_mysql show操作

    'latin%'; SHOW COLLATION 输出包括所有可用的字符集 SHOW COLLATION; SHOW COLLATION LIKE'latin1%'; SHOW COLUMNS 显示在 ...

  9. mysql 大分页查询优化_Mysql骚操作:优化大分页查询

    背景 系统结构如上图.经过排查是因为系统B拉取数据时间太长导致的推送超时. 系统B拉取数据的方法是根据_tiemstamp(数据操作时间)分页查询系统A的接口,即: 1SELECT 字段名2FROM  ...

最新文章

  1. 关于眼保健操中的轮刮眼眶
  2. 辽宁学业水平测试 计算机考试,辽宁高中学业水平考试报名系统
  3. centos 搭建web平台
  4. iPhone 12机模曝光:继续刘海屏、回归直面边框
  5. 纤程 java_JAVA协程 纤程 与Quasar 框架
  6. 【Java】Int类型逻辑运算符的详细描述---含代码
  7. SVN下载,安装,配置,常用操作 svn教程
  8. Jupyter的配置
  9. 按钮、菜单的重绘代码
  10. 关于未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序的解决办法
  11. cad插件_抖音最火CAD插件教程汇总
  12. 头像框DIY制作小程序源码王者吃鸡等气泡头像框在线生成源码
  13. 购买地铁车票的规定如下: 乘1-4站,3元/位;乘5-9站,4元/位; 乘9站以上,5元/位。 输入乘坐人数(per_num)和乘坐站数(sta_num), 计算购买地铁车票需要的总金额,并将计算结果
  14. 【附源码】计算机毕业设计java原创网络文学管理系统设计与实现
  15. Photoshop菜单中英文对照表
  16. 玩客云刷armbian安装php环境_玩客云刷armbian记录
  17. 软件体系结构与软件架构解析
  18. 关于禁止html缓存
  19. 虚拟机中安装linux系统步骤
  20. linux系统打开远程端口,linux下3种检测远程端口是否打开的方法

热门文章

  1. 国科大学习资料--人工智能原理与算法-第十四次作业解析(学长整理)
  2. V2.0 版本的 《JavaGuide面试突击版》来啦!带着它的在线阅读版本来啦!
  3. 2016年终总结——学生时代的结束、北漂生活的开始
  4. python 气泡图 聚类_R可视化 | 气泡图
  5. 云智巡在连锁药店的巡检作用
  6. 七月与安生观后感—告别我的27岁
  7. php 配置 error_reporting,关于php中的错误配置display_errors与error_reporting说明
  8. 这是我见过最接地气的PCB设计指南了!
  9. str系列函数详解(包会)
  10. [笔记]光照系统 实时GI、烘焙GI