mysql的分页怎么用 mysql分页查询原理

MySQL分页的sql语言怎么写?1、首先我们建立一个表表的数据 , 这个表里有25条数据,id从1到25 。(下图是部分截图)
2、要分页数据 , 首先我们假设一页有10条数据,我们可以用mysql的limit关键字来限定返回多少条数据 。并且用orderby来排序数据 , 这里用id来排序 。所以第一页的sql可以如图这样写 。
3、执行后得到的数据如图,就是id从1到10的前10条数据 , 因为我们是按id升序来排序的 。
4、上面第一页的sql是简化的写法 , 完整的写法如图,得到的结果和上图的一模一样 。代码里limit0,10的意思是从第一条数据开始,取10条数据 。(注意的是第一条数据是从0开始的)
5、那么第二页的数据,关键是要知道是从哪一条数据开始,可以用这个公式得到:(页码-1) *每页显示多少条,即(2-1)*10=10,所以sql语句如图,limit10,10 。
6、执行后,结果正确,得到id从11到20的10条数据 。
7、同理第三页数据的sql如图,br/就是limit20,10 。
8、查询的结果如图 , 因为这页只剩下5条数据了 , 所以只显示5条数据 。如果你有更多页的数据,后面的数据只需要按上面的公式,得到从哪行开始,就可以写对应的sql语句了 。
使用MySQL的递延Join连接实现高效分页 - Aaron 在 Web 应用程序中跨大型数据集分页记录似乎是一个简单的问题 , 但实际上很难扩展 。两种主要的分页策略是偏移/限制和游标 。
我们将首先看一下这两种方法,然后稍作修改,可以使偏移/限制非常高效 。
偏移/限制分页
偏移/限制方法是迄今为止最常见的方法,它通过跳过一定数量的记录(页)并将结果限制为一页来工作 。
例如,假设您的应用程序配置为每页显示 15 条记录 。您的 SQL 将如下所示:
这是最常见的,因为它非常简单,易于推理,并且几乎每个框架都支持它 。
除了易于实现之外,它还具有页面可直接寻址的优点 。例如,如果您想直接导航到第 20 页,您可以这样做,因为该偏移量很容易计算 。
但是有一个主要的缺点,它潜伏在数据库处理偏移量的方式中 。偏移量告诉数据库放弃从查询中返回的前N个结果 。不过数据库仍然要从磁盘上获取这些行 。
如果你丢弃的是100条记录,这并不重要,但如果你丢弃的是100,000条记录,数据库就会为了丢弃这些结果而做大量的工作 。
在实践中 , 这意味着第一个页面会快速加载,之后的每一个页面都会变得越来越慢 , 直到你达到一个点 , 网络请求可能会直接超时 。
基于游标的分页
基于游标的分页弥补了偏移/限制的一些不足,同时引入了一些自己的不足 。
基于游标的分页是通过存储一些关于最后呈现给用户的记录的状态,然后根据这个状态来进行下一次查询 。
因此,它不是按顺序获取所有的记录并丢弃前N条 , 而是只获取最后一个位置N之后的记录 。
如果按ID排序,SQL可能看起来像这样 。
你可能已经看到了其中的好处 。因为我们知道上次向用户展示的ID , 我们知道下一个页面将以一个更高的ID开始 。我们甚至不需要检查ID较低的行,因为我们百分之百肯定地知道那些行不需要被显示 。
在上面的例子中,我特别说明了ID可能不是连续的 , 也就是说 , 可能有缺失的记录 。这使得我们无法计算出哪些记录会出现在某一页面上,你必须跟踪之前那一页面上的最后一条记录是什么 。
与偏移/限制分页不同,使用游标分页时,页面不能直接寻址,你只能导航到 "下一页 "或 "上一页" 。

推荐阅读