Pagination
先过滤,再排序与聚合:把 27 秒分页查询降到 1 …
一个分页业务页面只返回约 10 KB 数据,却需要 27.49 秒。响应体很小,基本可以排除网络传输是主要瓶颈;但浏览器耗时本身还不能说明延迟来自页面渲染、应用代码,还是数据库。
真正有用的证据是:一次页面请求会执行两条高成本 SQL,一条用于计算分页总数,另一条用于取得当前十行数据。数据库统计显示,计数 SQL 平均约 21.3 秒,读取约 448 万个缓冲块;数据 SQL 还需要 7.8 至 9.0 秒。两者相加,几乎完整解释了前端观测到的耗时。
改写前的证据
原查询在知道用户实际需要哪些订单之前,就先构造了多个派生数据集:对大范围流转记录执行窗口排序,聚合明细和质检记录,最后才按组织、项 …