java - 需要在循环中执行 SQL 查询的替代方法
问题描述
问题:我的客户的要求之一是接收来自客户的订单(存储在 txnorder 表中)并针对它们生成装箱单(存储在 txnpackingslip 表中)。现在有时包装的物品多于订购的物品,这不是问题,当我必须生成包装多于订单的报告时会出现问题(引用为负订单)。有1400多个客户,txnorder表每天更新300多行,txnpacking slip表每天更新250多行。MySQL 服务器集中在一个虚拟主机上。
我所做的:我已经编写了一个如下的存储过程,但是使用集中式服务器需要 90 多秒才能提取结果,而订单表的行数为 1600,packinslip 为 1400
存储过程: `
CREATE DEFINER=`root`@`localhost` PROCEDURE `NegativeOrders`(
IN pcinput INT
)
BEGIN
SELECT
DISTINCT(o.ocode) AS "Code",
o.opcode, (o.obdl - IFNULL(p.pbdl,0)) AS "Req_Bdl",
(o.obox - IFNULL(p.pbox,0)) AS "Req_Box"
FROM
(SELECT DISTINCT(orderprdcode) AS ocode,
orderpartycode AS opcode, (SUM(orderbdl)) AS obdl,
(SUM(orderbox)) AS obox
FROM txnorder WHERE orderpartycode = pcinput
GROUP BY orderprdcode) o
LEFT JOIN
(SELECT DISTINCT(packprodcode) AS pcode,
packpartycode AS ppcode,
(SUM(packbdl)) AS pbdl,
(SUM(packbox)) AS pbox
FROM txnpackingslip WHERE packpartycode = pcinput
GROUP BY packprodcode) p
ON o.ocode = p.pcode
GROUP BY o.ocode
HAVING req_bdl < 0 OR req_box < 0;
END$$
DELIMITER ;
这是创建的 SQL 小提琴:NegativeOrderFiddle
注意:除了优化我的 SQL 之外,我愿意采用任何相关的方法
解决方案
推荐阅读
- random - 有没有办法从 HTML 表格中选择一个随机单元格并更改其背景颜色?
- mysql - Sails.js 无法从其他模型的生命周期中创建另一个模型中的数据
- android - Crashlytics 报告垃圾收集器内部的 Android 应用程序崩溃
- ruby-on-rails - 如何更改使用 Docker for Windows 创建的 Gemfile 的权限?
- html - 我如何像现有的每个流行网站一样为不同的页面重用 HTML 代码?
- powershell - 在 PowerShell 中覆盖目标文件
- c# - 无法使用带有嵌入列表(例如字典)的字典来解决我的问题
> - python - 如何解析字符串以进行数组访问
- javascript - 在javascript PHP问题中使用ajax的POST方法
- python - 如何比较两个 Dataframe 并更新其中一个 Dataframe 中的特定列?