专栏名称: macrozheng
专注Java技术分享,解析优质开源项目。涵盖SpringBoot、SpringCloud、Docker、K8S等实用技术,作者Github开源项目mall(50K+Star)。
今天看啥  ›  专栏  ›  macrozheng

分页查询接口,从2s优化到了0.01s!

macrozheng  · 公众号  · 数据库  · 2024-11-07 10:32

主要观点总结

文章提供了关于百万商品分页查询接口性能优化的9个技巧和建议。包括增加默认条件、减少每页大小、减少join表的数量、优化索引、使用straight_join、数据归档、使用count(*)、从ClickHouse查询和数据库读写分离等。

关键观点总结

关键观点1: 增加默认条件

通过为分页查询接口提供默认条件来缩小数据范围,避免每次都计算所有数据。

关键观点2: 减少每页大小

分页查询接口的每页大小不宜过大,过大的每页大小会影响接口性能。

关键观点3: 减少join表的数量

通过优化sql语句,减少join表的数量,提高分页查询接口的性能。

关键观点4: 优化索引

通过优化索引,提高分页查询接口的性能。建议使用explain关键字查看执行计划,根据实际情况创建或优化索引。

关键观点5: 使用straight_join代替inner join

在某些情况下,使用straight_join代替inner join可以解决MySQL选错索引的问题。

关键观点6: 数据归档

将历史数据归档到历史表中,减少主表的数据量,提高分页查询接口的性能。

关键观点7: 使用count(*)

在使用count统计总记录数时,使用count(*)或count(1)是性能最高的选择。

关键观点8: 从ClickHouse查询

将数据存储到ClickHouse等列式数据库中,提高查询性能。

关键观点9: 数据库读写分离

通过数据库读写分离,将读数据请求和写数据请求分别访问不同的数据库,提高系统的并发能力和查询性能。


文章预览

Boot+Cloud项目学习: macrozheng.com 前言 最近有个小伙伴问了这样一个问题:百万商品分页查询接口,如何保证接口的性能? 这就需要对该分页查询接口做优化了。 这篇文章从9个方面跟大家一起聊聊分页查询接口优化的一些小技巧,希望对你会有所帮助。 1 增加默认条件 对于分页查询接口,如果没有特殊要求,我们可以在输入参数中,给一些默认值。 这样可以缩小数据范围,避免每次都count所有数据的情况。 对于商品查询,这种业务场景,我们可以默认查询当天上架状态的商品列表。 例如: select * from product  where  edit_date>= '2023-02-20'  and edit_date < '2023-02-21'  and status=1 如果每天有变更的商品数量不多,通过这两个默认条件,就能过滤掉绝大部分数据,让分页查询接口的性能提升不少。 温馨提醒一下:记得给 时间 和 状态 字段增加一个 联合索引 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览