1. 概述
在打数据量的数据做分页查询的时候,很容易理解能优化体验,mysql的sql语句只需要通过offest,limit来处理。但是如果数据量很大,在偏移到100 000页的时候,查询的效率就会很低。因此需要对此做优化。
2. 优化
2.1 原理
当偏移量大的时候,效率低的原因在于,SQL语句在运行的时候会将满足where的条目都找出来,再在语句中找到偏移位置,取出需要的条目。因此,前面有100 000 * n个数据是不需要取出来,故这里有优化的空间:把前面的数据给过滤掉,不要找出来,也就是想办法让where不把他们找出来。
2.2 优化
1. 通过id过滤掉
- 用户在翻页的时候的时候只能一页一页的翻,然后前端把当前页的最后id和下一页的偏移量传到后端,就知道在某个id之后的n个记录,就是用户下一需要的页数据。
- 如果需要支持随机页的查询,那么查询可以分两步,第一步找id,第二步找 id + n 的数据。
