其他分享
首页 > 其他分享> > 如何优雅地实现分页查询

如何优雅地实现分页查询

作者:互联网

可以看到数据总行数大概45000条。

基于limit实现分页是比较简单的:

mysql> select * from user order by id asc limit 10000,10;

+-------+------------+

| id | name |

+-------+------------+

| 10000 | user_10000 |

| 10001 | user_10001 |

| 10002 | user_10002 |

| 10003 | user_10003 |

| 10004 | user_10004 |

| 10005 | user_10005 |

| 10006 | user_10006 |

| 10007 | user_10007 |

| 10008 | user_10008 |

| 10009 | user_10009 |

+-------+------------+

10 rows in set

其中,limit后面的第一个参数表示下标,也就是从第10000行记录开始取,第二个参数表示总共取10行记录

mysql> select * from user where id >=10010

order by id asc limit 10;

+-------+------------+

| id | name |

+-------+------------+

| 10010 | user_10010 |

| 10011 | user_10011 |

| 10012 | user_10012 |

| 10013 | user_10013 |

| 10014 | user_10014 |

| 10015 | user_10015 |

| 10016 | user_10016 |

| 10017 | user_10017 |

| 10018 | user_10018 |

| 10019 | user_10019 |

+-------+------------+

10 rows in set

可以看到,当在相邻的两页查询之间插入数据时,分页查询结果不会出现重复。其实也很好理解,因为虽然插入记录后,分页的结构变了,但是由于我们现在的分页查询是从固定的id开始查的,所以插入新的数据对后面的分页结果没有影响。

当然,这种分页查询也是有限制的。其只适用于用来排序的列具有唯一性的情况,在上述例子中,id列是主键,所以具有唯一性,故可以使用这种方式分页。如果用来排序的列不具有唯一性,比如说是时间戳,那么这种分页方式也可能出现重复,大家可以想想是为什么。

 

搜索

复制

<iframe></iframe>

标签:10,分页,查询,limit,user,优雅,id,+-------+------------+
来源: https://www.cnblogs.com/XiaoYeH/p/16371588.html