深入UGUI源码:性能优化与自定义组件实战指南
2026/8/11 3:36:24
深分页
select * from table limit offset,size它不是跳过offset条,而是从第一条开始扫描,舍弃前面的offset条,最后再取出size条数据
所以offset越大,需要扫描的行数就越多,就会越慢
子查询就是先通过索引定位到起始id,再通过id去主键索引里找数据
SELECT*FROMordersWHEREid>=(SELECTidFROMordersORDERBYidLIMIT1000000,1)ORDERBYidLIMIT20;先通过覆盖索引先定位到要要取的二十个主键,再回表查完整数据
SELECTo.*FROMorders oJOIN(SELECTidFROMordersORDERBYidLIMIT1000000,20)tONo.id=t.id;游标分页就是每次查询都需要先提供上一页的最后一条数据的id,查询时根据这个id跳过前面的数据
SELECT*FROMordersWHEREid>1000000ORDERBYidLIMIT20;1)限制最大翻页数。Google 搜索、淘宝商品列表都不让你翻到第 10000 页。大部分用户不会真的翻那么多页,限制一下既省资源又合理。
2)改交互方式。无限滚动加载就是典型的游标分页场景,用户感知不到页码,也不需要跳页。
3)缩小数据范围。深度分页通常说明数据量太大,可以引导用户加筛选条件,把结果集控制在合理范围内。