`

关于limit在后面为什么会慢的问题

 
阅读更多

      大家都用过mysql分页,实现一般是select * from talbe_name limit pageSize*(pageNo-1),pageSize

这条语句前面几页很快,为什么会随着pageNo增大而导致变慢呢?

 

原理是因为limit分页它会把pageSize*(pageNo-1)以前的记录也标记出来。这句话说得可能不是很容易理解。举个简单的例子,邮局的信件可能按地区分放在不同的架上子,这就相当于数据库的索引,你能很容易的找到哪些信件是西湖区的,并且每个架子上的信按收信时间排好序的。但是现在有个需求是要你找到西湖区里面信件在15号到20号的第10封到15封。你的做法我想应该首先找到西湖区所有的架子,这个很快你就能定位的,然后现在你怎么定位15号呢,如果架上有标记号数[时间索引]你也可以很轻松的找到。但是接下来呢?你怎么定位第10封呢,你会从15号开始找,看第一封是15号的,是第一个符号条件但是不是要我找的,恩,记下数,2,3,4,5,6,直到10,现在是我需要的了,拿出来,一直拿到第15封。问题就在这里,如果我要是需要找出第10000封至10010封呢,你得把前面都找一遍。所以到后面就会很慢了。

 

那要怎么解决呢,只要让前面的无用功少做一点儿就可以了。比如把上面的条件换成我要找18号12点到18号13点的不就少做很多无用功了吗?当然怎么把:找出第10000封至10010封这个需求转成找18号12点到18号13点跟你的业务场景有关了。

 

分享到:
评论

相关推荐

    MySQL limit使用方法以及超大分页问题解决

    前言 日常开发中,我们使用mysql来实现分页功能的时候,总是会用到mysql的limit语法.而怎么使用却很有讲究的,今天来总结一下. limit语法 ...实际使用中我们会发现,在分页的后面一些页,加载会变慢,也

    优化mysql的limit offset的例子

    经常碰到的一个问题是limit的offset太高,如:limit 100000,20,这样系统会查询100020条,然后把前面的100000条都扔掉,这是开销很大的操作,导致查询很慢。假设所有分页的页面访问频率一样,这样的查询平均扫描表的...

    Unity3d使用常见问题整理

    * 再次选中拖入的图片,选择Ngui>Open the Atlas Maker,Create按钮后面的文本框为精灵的名称。 * 点击Create创建一个标准的精灵。 * 如果创建时提示错误,请将if off,limit atlases to 2048X2048选上。 四、关于...

    mybatis-plus分页传入参数后sql where条件没有limit分页信息操作

    折腾了差不多两个小时,各种方法尝试,后来想想应该是where过滤后的数据量没有达到默认一页规定的数量所以干脆where就不显示limit信息了,试了一下还真是。。。这作者还真是把程序做的足够智能,可是这个智能也让我...

    操作系统(内存管理)

    为什么必须管理内存 内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要性有一点点降低。对实际编程来说,理解您的内存管理器的能力与局限性至关...

    vue axios post发送复杂对象问题

    虽然axios可配置发送方式(post/get等),但如果不做其他配置,post的数据其实也是拼在请求地址后面,而这种传输方式会有很多问题:一是可能数据丢失,二是get传送的数据长度有limit,如果需要保存大段的中文,会...

    zend_guard教程

    为什么Strong总是报错?如果只能用Encoding only,何时可以用Strong功能?  Encoding, Basic, Strong是加密级别逐步递增。您碰到的Strong报错问题,有可能是您定义的某个函数和变量同名,在模糊加密函数变量名的时候...

    内存管理内存管理内存管理

    为什么必须管理内存 内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要性有一点点降低。对实际编程来说,理解您的内存管理器的能力与局限性至...

    MySQL中按照多字段排序及问题解决

    研究了一下系统的数据库结构后,决定将要排除到后面的产品加为粗体,这样在数据库中的“ifbold”就会被标记为1,而其他产品就默认标记为0,然后就打算使用MySQL在Order By时进行多字段排序。 Order by的多条件分割...

    2013 RTX破解文件

    把“online_limit”(在线人数限制)后面的数改成“9999”,如图所示。不要太贪心,“9999”够了,太大可能出问题。  按F3,把“plugin_limit”(插件数限制)后面的数改成“99”。  三、认证破解  由于对licence....

    Java-PHP-C#

    PHP被大量的应用于Web的后台CGI开发,通常是在用户数据数据之后得出某种结果,但是如果用户输入的数据不正确,就会出现问题,比如说某人的生日是"2月30日"!那应该怎么样来检验暑假是否正确呢? 在PHP中加入了正则...

    解决webpack+Vue引入iView找不到字体文件的问题

    原因: css-loader后面带了参数modules(打包报错) url-loader后面带了参数name(引入报错) { test: /\.css$/, use: ExtractTextPlugin.extract({ ...limit=10000&name=fonts/[name].[ext]" } 解决方案:去掉参数

    DoitPHP v2.6.zip

    多个数值直接作为参数,紧跟在第三个参数后面。和上面的getOne(),getAll()的使用方法一样; 同样还有 query(),execute()的第三个参数。 delete()的第二个参数,以及update()的第三个参数。 二.分页扩展类 原类...

    DoitPHP 2.6.zip

    现在已更新为:多个数值直接作为参数,紧跟在第三个参数后面。和上面的getOne(),getAll()的使用方法一样;同样还有 query(),execute()的第三个参数。 delete()的第二个参数,以及update()的第三个参数。二.分页扩展类...

    grub4dos-V0.4.6a-2017-02-04更新

    FDD 模式的 u 盘被识别为硬盘,问题多多。已经发现的问题是执行 find,不返回 (hd0);精简 PE 加载映像文件死机。 2.解决了FDD 模式的 u 盘,执行 find 时返回 (fd0,n) 的问题。 3.修正了 menu.lst 中 0PE.ISO ...

    WordPress中文工具箱

    中文 WordPress 工具箱,很多地方也都介绍了,它是为了解决官方 WordPress 没有照顾到的中文相关问题的而开发的,也是款比较有用的插件了。使用这个插件,你可以显示随机文章,最新留言,留言最多文章,发表评论最多...

    生成百度sitemap站点地图的php类.zip

    where id > 取出的最大id(当前mysql为正序查询、如果为倒序、改成小于) limit 1000 这样的话又取出1000、然后修改索引查询txt的最小id、最大id、生成条数加到2000。以此类推等生成条数到了5000的时候再另起一行...

    解决PhpMyAdmin中导入2M以上大文件限制的方法分享

    找到php.ini搜索这3个地方 upload_max_filesize , memory_limit 和 post_max_size将他们后面的值修改成大于你需要导入的数据库大小就好了。然后重启的PHP环境. 方法二:以phpMyAdmin-3.1.0-all-languages为例,我的...

    piwigo-videojs安装说明和必须安装的软件

    最后的参数是安装piwigo-videojs插件的必须软件,并且需要指出安装位置,如果您已经把参数写到变量里面,可以不用理会直接删除就可以了,注意,在EXE后面有空格,否则执行脚本会出错。 设置环境变量,windows服务器...

Global site tag (gtag.js) - Google Analytics