mysql 按时间倒排序深翻页思考

news2025/1/8 12:46:45

背景

深翻页,可以用id做为偏移量,但如果是uuid时,或需求是要按时间排序时,深翻页就是一个问题了。

如果要按最后修改时间倒排序,把时间做索引是可以,但有可能时间是有重的,这样结果就可能不准确

这时就要考虑 time+id 组合分页得到最后条记录了

优化前

explain
SELECT * from t_report_variable r   ORDER BY r.create_time desc,r.id desc LIMIT 1010010 ,10;  #6.391 秒

优化后


explain
select * from t_uweb_hmi_report_variable r WHERE  
r.id <  ( select id from t_report_variable order by create_time desc  , id desc limit 1010009,1 )  ORDER BY  r.create_time desc, r.id  desc   limit 10;  #3.031 秒 

注意

有一个很奇怪的现象

当给create_time建立索引时, 或给(create_time id)建立联合索引时,反而更慢了

SELECT * from t_report_variable r   ORDER BY r.create_time desc,r.id desc LIMIT 1010010 ,10;  #6.391 秒  给create_time加索引 7.093 秒  联合索引  6.594 秒

select * from t_report_variable r WHERE  
r.id <  ( select id from t_uweb_hmi_report_variable order by create_time desc  , id desc limit 1010009,1 )  ORDER BY  r.create_time desc, r.id  desc   limit 10;  #3.031 秒  给create_time加索引 12.094  联合索引  12.672 

不理解

后来发现,是翻页到后面,数据量大时,索引失效了。

从10多W起就失效了,为什么失效,没发现原因,是不是因为create_time同一时间的多,因为这一百多万数据create_time是按批报上来的,比如几十条一次,时间是一样。 但也说不清楚,又不是只有几个时间段,也有400多个不同时间; 可能是400多在100W面前,相当于时间没有几个吧。

主键id就不会有这问题

特意找了张几十万张的表,时间都不同的,效果也是一样。

但如果,和其他字段组成联合索引就有效果

order by limit 造成优化器选择索引错误

如果要命中索引,查询结果就要和索引是同列了。

如果查询结果只有create_id 和id,是可以走索引的,如果有别的字段就不行

只有create_time也会走它的索引。

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

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

相关文章

【Deformable Convolution】可变形卷积记录

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 可变形卷积记录 1. 正文 预印版&#xff1a; Deformable Convolutional Networks v1 Deformable ConvNets v2: More Deformable, Better Results 发表版…

【郭东白架构课 模块一:生存法则】05|法则二:研发人员的人性需求是如何影响架构活动成败的?

你好&#xff0c;我是郭东白。上节课我们学习了马斯洛关于人性的理论&#xff0c;那么这节课我们就利用这个理论来看看我们在架构活动中应该注意些什么。 架构设计必须符合人性&#xff0c;而在架构活动中&#xff0c;与“人”相关的主要就是研发人员和目标用户。那么今天这节…

大数据全方位学习路线

大数据全方位学习路线 一、大数据处理流程 上图是一个简化的大数据处理流程图&#xff0c;大数据处理的主要流程包括数据收集、数据存储、数据处理、数据应用等主要环节。下面我们逐一对各个环节所需要的技术栈进行讲解&#xff1a; 1.1 数据收集 大数据处理的第一步是数据的收…

23- 条件随机场CRF (NLP算法) (算法)

CRF模型构建 : crf sklearn_crfsuite.CRF(c1 0.1,c2 0.1,max_iterations100,all_possible_transitionsTrue) crf.fit(X_train,y_train) 1、条件随机场CRF概述 将之前所有的观测作为未来预测的依据是不现实的&#xff0c;因为其复杂度会随着观测数量的增加而无限制地增长。因…

【C++提高编程】C++全栈体系(二十)

C提高编程 第三章 STL - 常用容器 二、vector容器 1. vector基本概念 功能&#xff1a; vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector与普通数组区别&#xff1a; 不同之处在于数组是静态空间&#xff0c;而vector可以动态扩展 动态扩展&#xff1a…

小菜版考试系统——“C”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容是小菜版考试系统&#xff0c;最近一直在忙C语言课程设计的事&#xff0c;那么&#xff0c;就请uu们看看我的学习成果吧。 课程设计任务 摘要 题目分析 流程图 关键程序代码 程序运行结果 结论与心得 参…

JVM08 StringTable

StringTable String的基本特性 String&#xff1a;字符串&#xff0c;使用一对 ”” 引起来表示 String s1 “mogublog” ; // 字面量的定义方式String s2 new String(“moxi”); string声明为final的&#xff0c;不可被继承String实现了Serializable接口&#xff1a;表示字…

python 调用 dll 出现精度问题

问题&#xff1a;python 在调用dll 的时候出现了精度问题 总结&#xff1a;使用decimal库进行转换就可以正常传递。 ‘ 心急的朋友可以略过下文了。 心急的朋友可以略过下文了。 心急的朋友可以略过下文了。 心急的朋友可以略过下文了。 ’ 遇到的问题具体情况 dll 生成函数…

手机棋牌游戏开发的流程是怎样的?

最近几年&#xff0c;随着网络游戏的兴起&#xff0c;棋牌手游开发也越来越受欢迎&#xff0c;在国内&#xff0c;几乎随处可见从事手游和手游的公司。不过&#xff0c;虽然公司和产品很多&#xff0c;但效果也不一样&#xff0c;区别就在于&#xff0c;他们能不能掌握好这款游…

实现一个更快的终端彩色文本格式化工具库

终端中打印的五颜六色的彩色文本&#xff0c;你知道是怎么实现的吗&#xff0c;你都知道或用过哪些相关的工具库呢&#xff1f;来一起了解一下吧&#xff01; 在前端项目开发中&#xff0c;说到控制台终端彩色文本格式化&#xff0c;你可能会想到 chalk、picocolors、ansi-colo…

ElasticSearch入门安装与SpringBoot集成实战

介绍 Elasticsearch 是一个实时分布式搜索和分析引擎&#xff0c;一般用于全文搜索、结构化搜索&#xff0c;分析或者三者混用。 它的底层是基于Apache Lucene&#xff08;TM&#xff09;的开源搜索引擎&#xff0c;但是lucene只是一个库&#xff0c;需要java开发然后集成到应…

LeetCode刷题复盘笔记—一文搞懂贪心算法之452. 用最少数量的箭引爆气球(贪心算法系列第十一篇)

今日主要总结一下可以使用贪心算法解决的一道题目&#xff0c;452. 用最少数量的箭引爆气球 题目&#xff1a;452. 用最少数量的箭引爆气球 Leetcode题目地址 题目描述&#xff1a; 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#…

备战蓝桥杯【二维前缀和】

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

【自学MYSQL】MySQL Windows安装

MySQL Windows安装 MySQL Windows下载 首先&#xff0c;我们打开 MySQL 的官网&#xff0c;网址如下&#xff1a; https://dev.mysql.com/downloads/mysql/在官网的主页&#xff0c;我们首先根据我们的操作系统&#xff0c;选择对应的系统&#xff0c;这里我们选择 Windows&…

神奇的nextTick一定能获取到最新的dom么?

前言 众所周知&#xff0c;vue的dom更新操作时异步的&#xff0c;为了获取更新后的dom官方提供了相应的apinextTick,文档中对该api的描述为&#xff1a;将回调延迟到下次 DOM 更新循环之后执行 , 所谓的下一次&#xff0c;到底是哪一次呢&#xff1f;dom更新是异步任务&#xf…

【数据结构与算法】链表1:移除链表 设计链表链表反转(双指针法、递归法)

文章目录今日任务1.链表理论基础&#xff08;1&#xff09;什么是链表&#xff1f;&#xff08;2&#xff09;链表的类型&#xff08;3&#xff09;链表的存储方式&#xff08;4&#xff09;链表的定义&#xff08;5&#xff09;链表的操作&#xff08;6&#xff09;性能分析2.…

【设计模式】综述

设计模式概述 文章目录一、设计模式1. 基本简介2. 面向对象设计原则二、基本类别1. 创建型模式会更新每种模式的详细博客超链接&#xff0c;敬请期待呀参考博客&#x1f60a;点此到文末惊喜↩︎ 一、设计模式 1. 基本简介 定义&#xff1a;设计模式是一个针对重复发生的问题的…

使用HTTP隧道代理,请求超过频率要怎么办?

在网上&#xff0c;经常会看到有人说使用隧道代理经常遇到429错误&#xff08;请求超过频率&#xff09;&#xff0c;我们要如何解决这一问题呢&#xff1f;通常情况&#xff0c;优质的HTTP代理厂商隧道代理服务器采用的是高性能主机构建的动态IP代理服务器&#xff0c;是可以支…

IO流

标题IO流的体系结构FileReader和FileWriterFileReader读入数据的基本操作FileReader中使用read(char [] cbuf)读入数据FileWriter写出数据字节流使用FileInputStream和FileOutputStream读写文本文件使用FileInputStream和FileOutputStream读写非文本文件缓冲流缓冲流&#xff0…

智慧校园平台源码:实现互联互通的校园管理一体化

智慧校园管理平台主要以校园安全、智慧校园数据管理云平台为核心&#xff0c;实现数据统一管理&#xff0c;以智慧电子班牌为学生智慧之窗&#xff0c;以移动管理平台、家校沟通为辅。实现教师—家长一学校—学生循环的无纸化管理模式及教学服务&#xff0c;实现多领域的信息互…