热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

多张大表数据关联查询报表需求优化

一、需求描述:“电商拣货管理”筛选出状态为生效,面单号为空的,并且创建时间离查询时间半小

一、需求描述:

“电商拣货管理”筛选出状态为生效,面单号为空的,并且创建时间离查询时间半小时以外的,需要ID,拣货单号,相关单号,创建时间,然后通过拣货单号关联到“外部接口报文”的关键信息(模糊关联,关键信息后面多两个数),取到响应内容,如果在下行报文通过拣货单号查不到对应的条文则通过“电商拣货管理”的相关单号关联“异步任务”的实体序号取出状态为失败的日志的异常内容,两个都匹配不到的也需要查询出来。

二、解读需求涉及表:

  1. 拣货单管理表

  2. 面单管理表

  3. 外部接口报文

  4. 异步任务日志表

三、数据信息

  1. 拣货单管理表与面单管理表相关性,取出面单号为空的数据(小心使用 where … is null,走不了索引 );

  2. 没有面单的拣货单信息,作为子查询,查询“外部接口报文表”相关数据;此处关联情况是近似关系,可以进行对外部接口报文表相应字段进行字段截取匹配,然而截取字段会使查询不走索引;

  3. 拣货单信息作为子查询,作为“异步任务日志表”查询条件;

  4. 原数据关联4张表,一次性进行拼接关联查询,测验单条数据查询,检测结果较慢,需要90s的情况,因此业务运用层面不能简单走一条SQL的方法。

四、工具选择

  1. 直接SQL报表有一定的风险,优化SQL费时费力,见效低;(不考虑)

  2. 拆分SQL查询,运行程序方程式逐步查询的方式,每步都走索引的方法,在模糊查询的地方,使用单条循环查询,like (左近似) '条件值%';(考虑借助熟悉的VBA+oracle方法)

五、代码呈现

六、代码分步情况
1.先按时间段选取时间后,再查询拣货单数据,减少Oracle负载,数据搬移至EXCEL(小心数据量大于2的32次方1048576行)

    

2.提取无面单数据

3.循环方法逐条查询数据

   4.在整个拆分的程序查询情况

运行的时效含EXCEL本地数据存储读写等方法,运行时效从原一条SQL跑出结果花费90s,优化为2s出结果;

七、小结

在SQL查询方法上,优先考虑一条SQL执行完成,减少反复数据库读写的交互。而本例中,涉及的4张表均为业务大表,查询只能走索引的方法,字段处理能使用正则表达式则使用正则表达式,将索引列加入运算再进行查询,是无法走索引,且严重影响数据结果呈现,属于亟待优化的SQL方法。由于本例业务需求上允许使用简单快捷的找出需求报表即可,因此,以VBA工具为切入点,优先将需求数据通过变通的方法快捷呈现,以减少因优化SQL费时费力,还影响业务运营,又因为此数据类型属于系统异常时才有可能出现,使用频率不会特别高,但出现异常时排查又比较麻烦,因此选择的方法就是变通、快捷、开发量小,也只有VBA符合这几种特性。



推荐阅读
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 浅析PHP中$_SERVER[
    在PHP后端开发中,`$_SERVER["HTTP_REFERER"]` 是一个非常有用的超级全局变量,它可以获取用户访问当前页面之前的URL。本文将详细介绍该变量的使用方法及其在不同场景下的应用,如页面跳转跟踪、安全验证和用户行为分析等。通过实例解析,帮助开发者更好地理解和利用这一功能。 ... [详细]
  • 优化Oracle数据库日志功能的关闭方法与实践
    在优化Oracle数据库日志功能的过程中,关闭不必要的日志记录是一项重要任务。本文探讨了Oracle 11g中日志路径的配置和管理,特别是针对常用的警报日志(alert log)。通过合理配置 `alert_$ORACLE_SID.log` 文件,可以有效减少日志文件的大小和提高系统性能。此外,文章还介绍了如何通过调整参数和使用脚本自动化日志管理,进一步提升数据库的稳定性和维护效率。 ... [详细]
  • 本文详细探讨了如何有效解决Oracle数据库中常见的ORA-01578和ORA-26040错误。这些错误通常与数据块损坏有关,严重影响数据库的稳定性和数据完整性。文章不仅提供了详细的故障诊断步骤,还介绍了多种修复方法,包括使用RMAN工具、手动修复数据块以及预防措施,以帮助数据库管理员高效应对这些问题。 ... [详细]
  • 从数据库中移除特定条目
    在数据库管理中,删除特定条目的操作是常见的需求。本文介绍了如何高效且安全地从数据库中移除指定记录,包括相关的 SQL 语句和注意事项,以确保数据完整性和系统稳定性。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • Spring Boot 中 JPA 自动执行 data.sql 文件的实现机制探析 ... [详细]
  • SQL字符串操作:深入解析 instr、substr 和 like 函数的应用与区别
    在进行SQL字符串操作时,经常会用到 `instr`、`substr` 和 `like` 函数。本文详细解析了这些函数的应用场景和区别。特别是 `like` 函数在处理文件路径匹配时可能会遇到的问题,如通配符 `_` 和 `%` 的使用。其中,`%` 可以匹配零个或多个任意字符,而 `_` 则匹配任意单个字符。通过实例和文档解析,帮助读者更好地理解和应用这些函数。 ... [详细]
  • 2016年11月7日周一:Kettle系统监测销售团队每日任务完成情况分析
    本文介绍了2016年11月7日对Kettle系统中销售团队每日任务完成情况的分析。具体包括:目标表中的激活客户数是指当月前30天内未下过单的客户;通过SQL查询语句获取销售员的当月销售确认金额、订单总额、首单数量及激活客户数量等关键指标,以便全面评估销售业绩。 ... [详细]
  • 本文深入探讨了Oracle 11g 数据泵技术中的 expdp 和 impdp 工具的应用与优化策略。数据泵技术通过创建数据库对象的逻辑副本并将其存储在二进制转储文件中,实现了高效的数据备份与恢复。具体而言,逻辑备份不仅涉及数据库对象的复制,还包括数据的完整性和一致性维护。导出操作(expdp)用于生成这些转储文件,而导入操作(impdp)则负责将这些文件中的数据恢复到目标数据库中。文章还详细分析了如何通过参数调整和最佳实践来提升数据泵的性能和可靠性。 ... [详细]
  • SQL 语句的性能优化:你做到了吗?
    在 SQL Server 查询性能优化中,书签查找的作用不容忽视。本文深入探讨了书签查找对查询效率的影响,并提供了实用的优化策略,帮助开发者提升数据库性能。通过具体案例分析,文章展示了如何有效避免不必要的书签查找,从而显著提高查询速度和系统响应时间。 ... [详细]
  • 在现代办公环境中,高效的办公软件是提升工作效能的关键。本文将推荐几款实用且专业的办公软件,帮助用户提高工作效率。首先,微软Office套件中的Word、Excel和PowerPoint依然是最常用的工具,它们凭借强大的功能和易用性,成为众多用户的首选。此外,本文还将介绍其他一些创新的办公软件,如Google Workspace和Notion,这些工具在协作和项目管理方面表现出色,值得尝试。 ... [详细]
author-avatar
帅哥刘常胜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有