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

一次显著的MySQL大表分页查询优化,从2.35到18ms!

macrozheng  · 公众号  · 互联网安全 数据库  · 2024-12-04 14:10
    

主要观点总结

文章主要介绍了在实际软件系统开发过程中,随着订单表等数据表的数据量增大,查询效率下降的问题。文章以电商系统的客户表为例,详细描述了分页查询下不同阶段的查询效率情况,并提供了三种解决方案来提升查询效率。同时,文章也讨论了主键ID类型选择对查询效率的影响,并推荐了一个开源电商系统项目mall及其视频教程。

关键观点总结

关键观点1: 问题复现

文章首先描述了随着数据表数据量的增长,查询效率下降的问题,以订单表和客户表为例,展示了不同数据量下的查询耗时情况。

关键观点2: 解决方案一:简化返回的字段

通过只返回主键ID而不是所有字段,可以显著成倍提升查询效率。具体操作是先通过分页查询满足条件的主键ID,然后通过主键ID查询部分数据。

关键观点3: 解决方案二:通过主键ID过滤

通过带上主键ID作为过滤条件进行查询,可以显著提升查询性能。这种方案要求主键ID必须是数字类型,且实践思路是取上一次查询结果的ID最大值作为过滤条件。

关键观点4: 解决方案三:采用elasticSearch作为搜索引擎

当数据量继续增大,尤其是出现分库分表的数据库时,可以采用elasticSearch实现快速分页和搜索。文章还提到了不推荐使用uuid作为主键ID,建议使用数值类型的主键ID。

关键观点5: 推荐项目和学习资源

文章最后推荐了一个开源电商系统项目mall及其视频教程,内容涵盖Spring Cloud核心组件、微服务项目实战、Kubernetes容器化部署等。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照