优化学习01-尽量不在循环里进行查询

2023-11-01

背景:BI项目,查询导购的等级,前端访问调接口太慢了,排查了其他sql,发现是自己把查询放在循环里的原因

错误示范:

修改方案:

//最终的结果
        List<ResGuiderMonthSaleDTO> result = new ArrayList<>();
        //个人
        if (Objects.equals(groupType, "personal")) {
            //月销售
            result = biGuiderSaleMapper.getMonthSalePersonal(101L, startDate, endDate,lastStartDate, groupId, personalName,year,month,lastyear,lastmonth);
            //匹配粉丝数和日净销售
            List<ResFanNumDTO> fanNums = biGuiderSaleMapper.getFanNums(101L, startDate, endDate,lastStartDate, "guiderId");
            List<BiGetValueDTO> daySalePrice = biGuiderSaleMapper.getDaySalePrice(101L, startDate, endDate, "guiderId");
            //查询导购等级
            List<BiGetValueDTO> allGuiderLevel = this.biGuiderSaleMapper.getAllGuiderLevel();
            //根据id分
            Map<Long, ResFanNumDTO> fanNumsMap = fanNums.stream()
                    .collect(Collectors.toMap(ResFanNumDTO::getId, Function.identity()));
            Map<Long, BiGetValueDTO> daySalePriceMap = daySalePrice.stream()
                    .collect(Collectors.toMap(BiGetValueDTO::getId, Function.identity()));
            Map<Long, BiGetValueDTO> guiderLevelMap = allGuiderLevel.stream()
                    .collect(Collectors.toMap(BiGetValueDTO::getId, Function.identity()));
            for (ResGuiderMonthSaleDTO one : result) {
                if (fanNumsMap.containsKey(one.getGuiderId())) {
                    one.setTotalFanNums(fanNumsMap.get(one.getGuiderId()).getTotalFanNums());//总粉丝数 endDate之前加的所有好友
                    one.setLastTotalFanNums(fanNumsMap.get(one.getGuiderId()).getLastTotalFanNums());//上期总粉丝数
                    one.setLastLastTotalFanNums(fanNumsMap.get(one.getGuiderId()).getLastLastTotalFanNums());//环比上期总粉丝数
                    one.setFriendsCount(fanNumsMap.get(one.getGuiderId()).getFriendsCount());//总好友数 当月及当月之前加的好友
                    one.setTotalAddSum(fanNumsMap.get(one.getGuiderId()).getTotalAddSum());//总加粉数 当月一共加了多少粉丝
                }
                if (daySalePriceMap.containsKey(one.getGuiderId())) {
                    one.setDaySalePrice(daySalePriceMap.get(one.getGuiderId()).getDecimal());
                }
                if (guiderLevelMap.containsKey(one.getGuiderId())) {
                    one.setGuiderLevelName(guiderLevelMap.get(one.getGuiderId()).getValue());
                }
            }
        }

 总结:尽量减少访问数据库的请求,导购数据本就不多,几十条记录,一次性把数据全拿出来,把对数据的处理放到内存中,会快很多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

优化学习01-尽量不在循环里进行查询 的相关文章

  • 如何将变量的全部内容发送/导出到文本文件/xml 文件/剪贴板?

    我想将实例的内容 最好以树形形式 发送给某人 打印屏幕是不行的 因为类太复杂了 您需要将输出转回实例吗 在这种情况下 其他答案都是正确的 如果您只想手动检查实例的内容 理想情况下您的类都将实现toString 你可以将其重定向到一个文件 如
  • 如何从 Play WSClient 的字符串创建 WSResponse 对象

    文档 https www playframework com documentation 2 4 x JavaTestingWebServiceClients Mock the web service建议使用模拟Web服务测试基于WSCli
  • 如何在log4j的配置文件中为文件附加器提供环境变量路径

    我有一个log4j xml配置文件 和一个RollingFileAppender我需要提供用于存储日志的文件路径 问题是我的代码将作为可运行的 jar 部署在 Unix 机器上 所以如果我传递这样的参数 value logs message
  • 如何在Java中优雅地处理SIGKILL信号

    当程序收到终止信号时如何处理清理 例如 我连接到一个应用程序 希望任何第三方应用程序 我的应用程序 发送finish注销时的命令 发送该信息最好说什么finish当我的应用程序被破坏时的命令kill 9 编辑1 kill 9无法被捕获 谢谢
  • Java:线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:

    我是初学者 谁能帮我弄清楚我们在做什么 我正在尝试读取字符串并将字符串的每个字符存储在数组中 import java util Scanner public class CoreMainDigitExtractor static Scann
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 关于Java泛型的一些问题

    假设我有以下接口和实现类 interface Foo
  • Android volley使用RequestFuture.get()时出现超时异常

    在我的片段中 我尝试使用 TMDB 的开放电影数据库来获取有关 正在播放 电影的详细信息 如果我使用 RequestFuture get time TimeUnit 方法来执行此齐射请求 我总是会收到超时错误 如果我在 Safari 中手动
  • 查找数组中的组合

    我在java中有一个像这样的二维数组 transmission communication tv television approach memorycode methodact 我需要获得所有组合 例如 transmission appr
  • 更改 JComboBox 中滚动条的大小

    有谁知道如何手动更改 jComboBox 中的滚动条大小 我已经尝试了一大堆东西 但没有任何效果 好吧 我明白了 您可以实现 PopUpMenuListener 并使用它 public void popupMenuWillBecomeVis
  • 是否有最新的 Facebook Java SDK? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 好像没找到最近更新的 如果没有 是否有一个好的 Java 库来执行与 Facebook 的 API 交
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • 使用 HTTPServletRequestWrapper 包装请求参数

    我有一个可以验证 授权 REST 调用的过滤器 该过滤器需要访问请求参数 因此我为此编写了一个自定义 HTTPServletRequestWrapper import java util Collections import java ut
  • Java和手动执行finalize

    如果我打电话finalize 在我的程序代码中的一个对象上 JVM当垃圾收集器处理这个对象时仍然再次运行该方法吗 这是一个大概的例子 MyObject m new MyObject m finalize m null System gc 是
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • 如何将库添加到 LIBGDX 项目的依赖项 gradle

    一切都在问题中 我已经尝试了在 SO 和其他网站中找到的所有答案 但没有运气 这就是我迄今为止尝试过的 adding compile fileTree dir lib include jar 到我的 build gradle adding
  • CXF:通过 SOAP 发送对象时如何排除某些属性?

    我使用 Apache CXF 2 4 2 当我将数据库中的某个对象返回给用户时 我想排除一些属性 例如密码 我怎样才能做到这一点无需创建临时的班级 有这方面的注释吗 根据 tomasz nurkiewicz 评论我应该使用 XmlTrans
  • Java 中的微分方程

    我正在尝试用java创建一个简单的SIR流行病模型模拟程序 基本上 SIR 由三个微分方程组定义 S t l t S t I t l t S t g t I t R t g t I t S 易感人群 I 感染人群 R 康复人群 l t c
  • @Embeddable 中的 @GenerateValue

    我已将实体的 id 分离到一个单独的 Embeddable 类中 该实体如下 Entity Table name users public class Users EmbeddedId private Users pk id private
  • Android Google 地图无法在当前主题中找到样式“mapViewStyle”

    添加谷歌地图视图时 我扩展了MapView 使用xml编辑器将其添加到活动中 并将我的谷歌地图api密钥手动添加到布局xml文件中 我的权限在清单文件中允许互联网 我想知道的是 在 xml 编辑器中 我收到错误 无法在当前主题中找到样式 m

随机推荐

  • Mysql连接问题

    连接MySQL长时间不连接后报错 com mysql cj core exceptions ConnectionIsClosedException No operations allowed after connection closed
  • eNSP华为模拟器使用——(11)eNSP模拟无线AC和AP

    eNSP模拟无线AC和AP 1 拓扑 2 需求 实现AC和AP二层关联 3 配置 dhcp enable interface Vlanif 1 ip address 192 168 10 1 255 255 255 0 dhcp selec
  • MySql 字符串数据类型

    字符串类型 CHAR CHAR类型是定长的 会根据定义的长度分配空间 当存储CHAR值时 mysql会删除所有的末尾空格 CHAR很适合存储很短的字符串 或者所有的值都接近同一个长度 例如 CHAR非常适合存储密码的MD5的值 因为这是一个
  • Java毕设 SSM中药店商城系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 3 系统结构设计 4 项目获取 1 项目简介 Hi 各位同学好呀 这里是M学姐 今天向大家分享一个今年 2022 最新完成的毕业设计项
  • id 重启event_系统已在未先正常关机的情况下重新启动 事件ID:41

    创建日期 2018 07 18 系统已在未先正常关机的情况下重新启动 事件ID 41 日志名称 System 来源 Microsoft Windows Kernel Power 日期 2018 7 17 23 55 06 事件 ID 41
  • do...while(0)的妙用

    在C 中 有三种类型的循环语句 for while 和do while 但是在一般应用中作循环时 我们可能用for和while要多一些 do while相对不受重视 但是 最近在读我们项目的代码时 却发现了do while的一些十分聪明的用
  • Km Kcat Kcat/Km

    max 是指 最大反应速度 当 底物浓度 足够大时 体系中 酶的活性中心达到饱和状态 其反应速度达到最大 由此可见 最大反应速度 max 随 酶浓度的变化而变化 kcat 指反应常数 catalytic constant kcat 可以由
  • python爬取小说(二)书籍基本信息爬取

    爬完数据目录和内容后 我们来爬取书籍的基本信息 在上篇博客的基础上 爬取书籍信息并存入字典 coding utf 8 import urllib request import bs4 import re import sqlite3 def
  • SpringBoot项目使用docker-maven-plugin插件构建docker镜像以及推送到docker hub或docker registry私服

    我们知道docker可将应用程序和基础设施层隔离 可更快地打包 测试以及部署应用程序 本文主要介绍SpringBoot项目如何构建docker镜像以及推送到私服或者docker hub服务器上 本文介绍的方式是使用docker maven
  • JAVA 反射机制--reflection

    1 关于JAVAf 反射机制的一些基本的介绍参见好搜百科http baike haosou com doc 5458411 5696799 html或者搜索关键字 JAVAf 反射机制 2 这里总结下JAVAf 反射机制是如何运用的 或者说
  • Python零基础小白快速上手,不多废话

    Python零基础小白快速上手 Markdown编辑器和python安装 Markdown编辑器就是程序员常用的记事本 https img blog csdnimg cn 20201031151738673 png pic center 这
  • ElementUI中的 el-table 怎样格式化显示1和0为男和女

    场景 数据库中存储的是int型的1和0 从数据中取出来的也是1和0 怎样将其格式化为男和女 实现 table 表格
  • java list转换类型_java List数据转换为json类型数据

    list new ArrayList for int i 0 i lt carouselImageList size i CarouselImage a carouselImageList get i if a null a new Car
  • grafana使用

    1 面板 1 1 添加面板 add a new panel 增加一个新的统计图 add a new row 多个panel集合在一起 例如overview 1 2 Panel 2 PromQL查询语句 2 1 计算每一个样本的占比 饼图展示
  • 使用RBF(径向基函数)网络进行Python编程

    使用RBF 径向基函数 网络进行Python编程 径向基函数 RBF 网络是一种常用的神经网络模型 它在许多领域中都有广泛的应用 如模式识别 函数逼近和时间序列预测等 本文将介绍如何使用Python编程实现RBF网络 并提供相应的源代码 首
  • 详细使用sqlite3教程及打包资源

    包含编译好的unicode 多字节两种静态库 和sqlite3 h 还有我自己写的详细使用sqlite3的类 完整可用 实际项目我用过 有不对的地方还请大家批评指正 https download csdn net download qq 3
  • 推荐一款 IDEA 生成代码神器,写代码再也不用加班了

    Easycode是idea的一个插件 可以直接对数据的表生成entity controller service dao mapper 无需任何编码 简单而强大 1 安装 EasyCode 我这里的话是已经那装好了 建议大家在安装一个插件 叫
  • 2021年华为OD面试总结

    文章目录 写在前面 面试总体流程 简历筛选 线上机考 综合评测 业务面试 背景调查和HR面试 主管面试 写在前面 笔者211重点大学本科 毕业近5年 因为之前不是学python的 是近两年入了编程教培行业 所以慢慢接触到的python 然后
  • 《数据结构与算法》实验:查找结构的实验比较——二叉查找树BST & 二分(折半)查找

    数据结构与算法 实验和课程Github资源 数据结构与算法 实验 线性结构及其应用 算术表达式求值 数据结构与算法 实验 树型结构的建立与遍历 数据结构与算法 实验 图结构的建立与搜索 数据结构与算法 实验 查找结构的实验比较 二叉查找树B
  • 优化学习01-尽量不在循环里进行查询

    背景 BI项目 查询导购的等级 前端访问调接口太慢了 排查了其他sql 发现是自己把查询放在循环里的原因 错误示范 修改方案 最终的结果 List