2:数据现状
目前退货单表有千万级别数据,索引基本该有的都有,从日志埋点可以看到有些查询竟然用36S:
?
二、分析与优化
1:老sql分析
mybatis中sql片段:
<!...B+树
B+树在B树的基础上演化而来,是B树的一个升级版,相对于B树来说B+树更充分的利用了节点的空间,让查询速度更加稳定,其速度完全接近于二分法查找。...比如一个非主键检索,查询偏移量limit 950,50按创建时间倒序的数据,数据库引擎会执行查询,从非聚簇索引树上回表到聚簇索引树上取出1000条数据,然后排序,最后筛选出第950~1000条数据。...老sql执行过程
解析sql,生成执行计划,选择seller_id索引树执行查询
扫描了10684行记录找到记录
回表从主键索引树取出50条数据,选择50条返回(偏移量从0开始50条,如果偏移量从10000...开始那么回行带来的性能问题会放大)
新sql执行过程
解析sql,生成执行计划,子查询选择seller_id索引树执行查询
扫描10684条记录,由于排序字段是主键,排序和筛选操作直接在seller_id