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数据。