广告
返回顶部
首页 > 资讯 > 数据库 >MySQL分页的基本原理
  • 949
分享到

MySQL分页的基本原理

mysql 2022-10-18 20:10:35 949人浏览 薄情痞子
摘要

这篇文章主要介绍“Mysql分页的基本原理”,在日常操作中,相信很多人在mysql分页的基本原理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql分页的基本原理”的疑惑

这篇文章主要介绍“Mysql分页的基本原理”,在日常操作中,相信很多人在mysql分页的基本原理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql分页的基本原理”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!


 
首先看一下分页的基本原理:
 
> explain SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20\G
***************** 1. row **************
id: 1
select_type: SIMPLE
table: message
type: index
possible_keys: NULL
key: PRIMARY
key_len: 4
ref: NULL
rows: 10020
Extra:
1 row in set (0.00 sec)
 
limit 10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行,问题就在这里,如果是limit 100000,100,需要扫描100100行,在一个高并发的应用里,每次查询需要扫描超过10W行,性能肯定大打折扣。文中还提到limit n性能是没问题的,因为只扫描n行。
 
文中提到一种”clue”的做法,给翻页提供一些”线索”,比如还是SELECT * FROM message ORDER BY id DESC,按id降序分页,每页20条,当前是第10页,当前页条目id最大的是9527,最小的是9500,如果我们只提供”上一页”、”下一页”这样的跳转(不提供到第N页的跳转),那么在处理”上一页”的时候SQL语句可以是:
 
SELECT * FROM message WHERE id > 9527 ORDER BY idASC LIMIT 20;
 
处理”下一页”的时候SQL语句可以是:
 
SELECT * FROM message WHERE id < 9500 ORDER BY idDESC LIMIT 20;
 
不管翻多少页,每次查询只扫描20行。
 
缺点是只能提供”上一页”、”下一页”的链接形式,但是我们的产品经理非常喜欢”<上一页1 2 3 4 5 6 7 8 9 下一页>”这样的链接方式,怎么办呢?
 
如果LIMIT m,n不可避免的话,要优化效率,只有尽可能的让m小一下,我们扩展前面的”clue”做法,还是SELECT * FROM message ORDER BY id DESC,按id降序分页,每页20条,当前是第10页,当前页条目id最大的是9527,最小的是9500,比如要跳到第8页,我看的SQL语句可以这样写:
 
SELECT * FROM message WHERE id > 9527 ORDER BY idASC LIMIT 20,20;
 
跳转到第13页:
 
SELECT * FROM message WHERE id < 9500 ORDER BY idDESC LIMIT 40,20;
 
原理还是一样,记录住当前页id的最大值和最小值,计算跳转页面和当前页相对偏移,由于页面相近,这个偏移量不会很大,这样的话m值相对较小,大大减少扫描的行数。其实传统的limit m,n,相对的偏移一直是第一页,这样的话越翻到后面,效率越差,而上面给出的方法就没有这样的问题。
 
注意SQL语句里面的ASC和DESC,如果是ASC取出来的结果,显示的时候记得倒置一下。
 
已在60W数据总量的表中测试,效果非常明显。

到此,关于“MySQL分页的基本原理”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL分页的基本原理

本文链接: https://www.lsjlt.com/news/59367.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL分页的基本原理
    这篇文章主要介绍“MySQL分页的基本原理”,在日常操作中,相信很多人在MySQL分页的基本原理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL分页的基本原理”的疑惑...
    99+
    2022-10-18
    mysql
  • MySQL分页基本原理有哪些
    这篇文章主要介绍“MySQL分页基本原理有哪些”,在日常操作中,相信很多人在MySQL分页基本原理有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL分页基本原理有...
    99+
    2022-10-18
    mysql
  • Mysql索引基本原理
      1.Mysql表空间、段、区、页     在讲索引的概念之前我们先说一下mysql中段区页的概念。     表空间是Mysql数据库存储的最高层,默认情况下InnoDB引擎只有一个表空间,所有的数据都是存放在这个表空间内。  ...
    99+
    2017-03-31
    Mysql索引基本原理
  • MySQL读写分离基本原理是什么
    本篇内容主要讲解“MySQL读写分离基本原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL读写分离基本原理是什么”吧!一、读写分离工作原理在一些...
    99+
    2022-10-19
    mysql
  • mysql的锁机制基本原理
    本篇内容介绍了“mysql的锁机制基本原理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!今天没事就学习一下...
    99+
    2022-10-18
    mysql
  • Golang template 包基本原理分析
    目录template 概述解析流程Parse阶段Execute阶段小结template 概述 最近在做脚手架相关的内容, 研究了一下 Go 的 text/template 包, 接下...
    99+
    2022-11-11
    Golang template 包 Golang template
  • MySQL DISTINCT 的基本实现原理详解
    前言 DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已。所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,...
    99+
    2022-10-18
    mysql distinct 实现
  • 详解oracle分页查询的基础原理
    本文从数据查询原理,以及分页实现的方法详细分析了oracle分页查询的基础知识,以下是本文内容: 原因一 oracle默认为每个表生成rowmun,rowid字段,这些字段我们称之为伪列 1 创建测试表 ...
    99+
    2022-10-18
    oracle 分页查询 基础原理
  • flink基本原理
    一、简介 开源流式处理系统在不断地发展,从一开始只关注低延迟指标到现在兼顾延迟、吞吐与结果准确性,在发展过程中解决了很多问题,编程API的易用性也在不断地提高。本文介绍一下 Flink 中的核心概念,这些概念是学习与使用 Flink 十分重...
    99+
    2021-02-28
    flink基本原理
  • 爬虫的基本原理
    爬虫是什么如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;从技术层面来说就是 通过程序模拟浏览器请求站点...
    99+
    2023-01-30
    爬虫 基本原理
  • 腾讯云TDSQL基本原理-读写分离
    当处理大数据量读请求的压力大、要求高时,可以通过读写分离功能将读的压力分布到各个从节点上。 TDSQL MySQL版 默认支持读写分离功能,架构中的每个从机都能支持只读能力,如果配置有多个从机,将由网关集群(TProxy)自动分配到低负载...
    99+
    2014-07-13
    腾讯云TDSQL基本原理-读写分离
  • java中ThreadLocal的基本原理
    目录基本流程ThreadLoalMap数据结构Hash冲突及解决ThreadLocal内存泄露内存引用链路引用类型为什么使用弱引用而不是强引用?泄露原因分析ThreadLocal应用场景 源码实现 一个线程内可以存多个ThreadL...
    99+
    2015-05-05
    Java ThreadLocal基本原理 Java ThreadLocal
  • GoldenGate的基本原理介绍
    本篇内容介绍了“GoldenGate的基本原理介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是Go...
    99+
    2022-10-18
    goldengate
  • 说MGR - MGR的基本原理
    状态机复制MGR本质上一个状态机复制的集群。在状态机复制的架构中,数据库被当做一个状态机。每一次写操作都会导致数据库的状态变化。为了创建一个高可用的数据库集群,有一个组件,即事务分发器,将这些操作按照同样的...
    99+
    2022-10-18
    状态机 分布式的状态机 gr
  • Xamarin.Forms中基本页面和基本视图的示例分析
    这篇文章将为大家详细讲解有关Xamarin.Forms中基本页面和基本视图的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Xamarin.Forms的基本页面和基本视图在Xamarin.Forms...
    99+
    2023-06-04
  • 怎样理解Spark的基本原理
    怎样理解Spark的基本原理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1Spark优势特点作为大数据计算框架 MapReduce 的继任者,Spark 具备以下优势特性...
    99+
    2023-06-02
  • 浅谈SpringSecurity基本原理
    目录一、SpringSecurity 本质二、典型过滤器2.1 FilterSecurityInterceptor2.2 ExceptionTranslationFilter2.3 ...
    99+
    2022-11-12
    SpringSecurity原理 Spring底层原理
  • Python爬虫基本原理
    看崔庆才爬虫教程视频做的笔记。 1.什么是爬虫? 请求网站并提取数据的自动化程序。 2.爬虫的基本流程 发送请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。 ...
    99+
    2023-01-30
    爬虫 基本原理 Python
  • SpringSecurity基本原理详解
    目录1、SpringSecurity 本质是一个过滤器链2、SpringSecurity 流程图流程说明3、Security 配置配置类伪代码配置简介4、Security 权限系统5...
    99+
    2023-05-19
    Spring Security Security原理
  • Gradle构建基本原理
    Gradle是一个基于Groovy的构建工具,它的构建基本原理主要包括以下几个方面:1. 构建脚本:Gradle使用Groovy语言...
    99+
    2023-09-21
    Gradle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作