MySQL分页查询的原理

Keys: LIMIT OFFSET
请注意分页是方便客户端浏览,并不是优化查询的方式。查询引擎还是会查询满足条件的所有数据,再对结果集进行分页。

(1). mysql引擎提供了limit和offse函数,通过控制查询开始的行和查询的行数来实现分页查询。
LIMIT: 查询返回的总行数
OFFSET: 指定查询跳过的行数,即从哪一行开始查询

(2) 场景: 分页查询,一页10行。

 1. 第一页查询: 从第一行开始,需要跳过count_row = 0
    select * from <table_name>  LIMIT  10 OFFSET 0
  
   2. 第二页查询:从第11行开始,需要跳过count_row = 10
   select * from <table_name>  LIMIT  10 OFFSET 10

  3. 第三页查询: 从第21行开始,需要跳过count_row = 20
    select * from <table_name>  LIMIT  10 OFFSET 20

(3)是否可以不使用offset?
直接使用limit函数即可,上述的效果一样。

     SELECT * FROM table_name
     LIMIT offset, count;

(4) 分页查询的执行流程
mysql先筛选出所有满足条件的数据,再进行分页。需要注意的时候分页查询不能优化查询,相反与无分页查询相比还会对DB的压力更大。

查询第三页的数据,每页展示10行
select name,age
from user
where sex = “男”
order by age
limit 10 offset 20;
执行顺序: 先执行where 查询所有满足条件的所有数据 - >升序排列 - >对结果集分页,跳过前20条,查询出近10 row数据。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL分页查询语句可以使用LIMIT关键字实现。LIMIT可以指定查询结果的起始位置和返回的记录数。一般的分页查询语句可以写成"SELECT * FROM 表名 LIMIT 起始位置, 返回记录数"的形式。其中,起始位置是从0开始计数的。例如,如果要返回第一页的10条记录,可以写成"SELECT * FROM 表名 LIMIT 0, 10"。如果要返回第二页的10条记录,可以写成"SELECT * FROM 表名 LIMIT 10, 10"。这样就可以实现分页查询了。另外,也可以使用子查询的方式实现分页查询,例如"SELECT * FROM 表名 WHERE id > (SELECT id FROM 表名 ORDER BY id LIMIT 起始位置, 1) LIMIT 返回记录数"。这种方式可以解决跨页查询的问题,并且性能相对较好。通过使用LIMIT关键字和合适的起始位置和返回记录数,可以实现高效的MySQL分页查询。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql分页原理和高效率的mysql分页查询语句](https://download.csdn.net/download/weixin_38657457/12833086)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL分页查询的5种方法](https://blog.csdn.net/std7879/article/details/125308628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值