数据库分页的使用优劣

针对数据进行paginate,使用offset的优劣

首先要了解,使用offset+limit的原理

  • offset即是偏移量,首先是通过对id排序,,然后通过在<result offset子句>中指定的行数从起始处丢弃指定的行数来限制
  • 如果offset的值过于大,那么获取到的数据量也会很大,这样会造成性能的消耗
  • 从分页的角度来看,也就是说页数越靠后,那么每次获取到的数据都会越来越多(在抛弃不要的数据之前)

针对以上的情况,使用keyset的方式来进行分页操作是最好的

1
2
3
4
5
6
SELECT ...
FROM ...
WHERE ...
AND id < ?last_seen_id
ORDER BY id DESC
FETCH FIRST 10 ROWS ONLY
  • 这种方式在于可以定量选取部分数据
  • 但由于要存储额外的主键id字段,然后再使用这个字段来获取需要的数据量