iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >不在分页中使用offset和limit的原因是什么
  • 518
分享到

不在分页中使用offset和limit的原因是什么

2024-04-02 19:04:59 518人浏览 安东尼
摘要

这篇文章主要讲解了“不在分页中使用offset和limit的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“不在分页中使用offset和limit的

这篇文章主要讲解了“不在分页中使用offset和limit的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“不在分页中使用offset和limit的原因是什么”吧!

OFFSET和LIMIT有什么问题?

正如我们在上几段中简要探讨的那样,OFFSET和LIMIT非常适合于数据使用量很少甚至没有的项目

当你的数据库开始收集的数据超过了服务器在内存中的存储量时,问题就出现了,你仍然需要对这些数据进行高性能的分页。

要做到这一点,数据库需要在每次请求分页时执行一次低效的全表扫描(在此期间可能会发生插入和删除,我们不希望数据过时!)。

什么是全表扫描?全表扫描(又名顺序扫描)是指在数据库中进行扫描,顺序读取表中的每一条记录,然后检查遇到的列的条件是否有效。这种类型的扫描被认为是最慢的,因为从磁盘上读取的I/O量很大,包括多次寻找以及昂贵的磁盘到内存的传输。

这意味着,如果你有100.000.000个用户,而你要求的OFFSET是50.000.000,那么它将需要获取所有这些记录(甚至不需要!),将它们放在内存中,然后才会得到在LIMIT中指定的20个结果。

因此,要在网站上显示这样的分页:

50.000 to 50.020 of 100.000

首先需要获取50.000行,看看这效率低下吗?

你应该使用什么

这是你应该使用的:

不在分页中使用offset和limit的原因是什么

这是基于游标的分页。

你应该存储最后接收到的主键(通常是一个ID)和Limit,而不是在本地存储当前offset和limit将其与每个请求一起传递,这样查询最终可能与此类似。

为什么?因为通过显式传递最新的读取行,你可以根据有效的索引键告诉数据库确切从哪里开始搜索,而不必考虑该范围之外的任何行。

以下面的比较为例:

不在分页中使用offset和limit的原因是什么

针对我们的优化版本:

不在分页中使用offset和limit的原因是什么

接收到的记录完全相同,但是第一个查询花费了12.80秒,第二个查询花费了0.01秒。你能体会到差异吗?

注意事项

为了使游标分页能够无缝地工作,你需要有一个独特的、有顺序的列(或列),比如一个独特的整数ID,在某些特定的情况下,这可能是一个问题。

和以往一样,我的建议是一定要考虑每个表架构的优缺点,以及你需要在每个表中执行哪种查询。如果你需要在查询中处理大量相关数据,Rick  James的“Lists article”文章可能会为你提供更深入的指导。

如果我们手中的问题与没有主键有关,比如我们有一个多对多的关系表,传统的OFFSET/LIMIT的方法在这些情况下总是可以使用的,然而这将重新引入潜在的较慢的查询。因此,我建议在要分页的表中使用自动递增的主键,即使只是出于分页的目的。

感谢各位的阅读,以上就是“不在分页中使用offset和limit的原因是什么”的内容了,经过本文的学习后,相信大家对不在分页中使用offset和limit的原因是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 不在分页中使用offset和limit的原因是什么

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

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

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

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

下载Word文档
猜你喜欢
  • 不在分页中使用offset和limit的原因是什么
    这篇文章主要讲解了“不在分页中使用offset和limit的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“不在分页中使用offset和limit的...
    99+
    2022-10-19
  • 使用limit,offset分页场景时会慢的原因是什么
    这篇文章主要介绍使用limit,offset分页场景时会慢的原因是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!从一个问题说起五年前在腾讯的时候,发现分页场景下,mysql请求速...
    99+
    2022-10-18
  • 不能在PHP中使用泛型的原因是什么
    小编给大家分享一下不能在PHP中使用泛型的原因是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么我们不能在 PHP 中使用泛型我们将深入探讨泛型和 PHP...
    99+
    2023-06-29
  • MySQL中不使用Text类型的原因是什么
    MySQL中不使用Text类型的原因是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。众所周知,MySQL广泛应用于互联网的OLTP(联机事...
    99+
    2022-10-18
  • MySQL中不建议使用SELECT *的原因是什么
    本篇内容介绍了“MySQL中不建议使用SELECT *的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!“不要使用...
    99+
    2023-06-29
  • es6中不用var而是用let的原因是什么
    本文小编为大家详细介绍“es6中不用var而是用let的原因是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6中不用var而是用let的原因是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2022-10-19
  • 尽量不要使用CSS Expression的原因是什么
    这篇文章将为大家详细讲解有关尽量不要使用CSS Expression的原因是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在CSS Expression...
    99+
    2022-10-19
  • thinkphp中类不存在的三种原因和解决方法是什么
    这篇“thinkphp中类不存在的三种原因和解决方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“thinkphp中类...
    99+
    2023-07-05
  • vuex不建议在action中修改state的原因是什么
    这篇文章给大家分享的是有关vuex不建议在action中修改state的原因是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一起阅读源码吧~1.首先我们可以在src/stor...
    99+
    2022-10-19
  • react中使用node的原因是什么
    这篇文章主要讲解了“react中使用node的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“react中使用node的原因是什么”吧! ...
    99+
    2022-10-19
  • 分布式选择使用redis的原因是什么
    分布式选择使用redis的原因是什么?可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在项目中使用redis,主要是从两个角度去考虑:性能和并发。当然,...
    99+
    2022-10-18
  • MyBatis中不建议使用where 1=1的原因是什么
    这篇文章主要介绍了MyBatis中不建议使用where 1=1的原因是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis中不建议使用where 1=1的原因...
    99+
    2023-07-02
  • 使用代理IP不能上网的原因是什么
    这篇文章主要讲解了“使用代理IP不能上网的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用代理IP不能上网的原因是什么”吧!大概大家对代理IP并不陌生,特别是因特网工作者,经常需...
    99+
    2023-06-20
  • MongoDB中使用 B树的原因是什么
    本篇文章给大家分享的是有关 MongoDB中使用 B树的原因是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MongoDB 是一个通用的、...
    99+
    2022-10-18
  • CSS中overflow-y: visible;不起作用的原因是什么
    这篇文章主要介绍CSS中overflow-y: visible;不起作用的原因是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!场景最近要做的一个需求是移动端的h6页面,要求有一排可选择的卡片, 超出容器部分可以左...
    99+
    2023-06-08
  • Vue.use()在new Vue()之前使用的原因是什么
    这篇文章将为大家详细讲解有关Vue.use()在new Vue()之前使用的原因是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用Vue前端框架开发有些时间了,官方...
    99+
    2022-10-19
  • MySQL中不建议使用Delete删除数据的原因是什么
    今天就跟大家聊聊有关MySQL中不建议使用Delete删除数据的原因是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。InnoDB存储架...
    99+
    2022-10-18
  • HTML中为什么不允许使用固定定位?原因分析
    为什么HTML中不能使用固定定位?固定定位(fixed positioning)是CSS中的一种定位方式,它可以使元素在浏览器窗口内固定位置,无论用户如何滚动页面。然而,固定定位在HTML中的应用是有限制的,不同的元素和场景下可能会出现不同...
    99+
    2023-12-28
    html 固定定位 原因解析
  • MySql主键id不推荐使用UUID的原因是什么
    本文小编为大家详细介绍“MySql主键id不推荐使用UUID的原因是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySql主键id不推荐使用UUID的原因是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-05
  • 不要在PHP接口URL中添加后缀的原因是什么
    这篇文章主要介绍了不要在PHP接口URL中添加后缀的原因是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇不要在PHP接口URL中添加后缀的原因是什么文章都会有所收获,下面我们一起来看看吧。为什么不要在PHP...
    99+
    2023-07-05
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作