mysql分页的两种方式
offset 方式
这种方式中 offset 在数量很大时查询会很慢,因为查询语句会扫描全表。
select id,name from table limit offset 20
keyset 方式
这种方式主要时为了解决第一方式带来的弊端设计的,其本质上就是在每一次查询时记住当前查询的最后一行信息,并在下一个查询时将最后一条信息加入到where条件中。实现索引扫描杜绝全表扫描。
# 第一条查询语句
select id,name from table limit 20 where id > 0;
# 假设第一条查询语句返回的最后一条记录是{id:20,name:张三}
# 第二条查询语句
select id,name frome table limit 20 where id > 20;
count 查询优化
# 这种方式数据量很大时很慢
select count(*) from table;
# 可以使用下面这种方式获取数据的总数。
explan select count(*) from table
# 也可以在其他位置缓存表中的总记录数,避免每次进行查询
