gpt4 book ai didi

mysql - 为什么这个查询需要这么长时间才能执行

转载 作者:行者123 更新时间:2023-11-29 02:31:48 25 4
gpt4 key购买 nike

我有三个表

  • glSalesJournal
  • HMIS添加
  • HMISMain

现在我要做的是将 glSalesJournal amt 添加到 HMISAdd amt,同时将各种字段分组并将结果插入到 glSalesJournal

glSalesJournal 包含 633173 条记录

HMISAdd包含4193条记录

HMISAdd 和 glSalesJournal 包含相同的列

  • 地点
  • glAcct
  • gl子帐户
  • 批号
  • 契约(Contract)编号
  • 我是

我给表加了索引,结果还是一样。

这是我的代码:

INSERT INTO hmismain
(loc,
glacct,
subacct,
batchnbr,
contractnbr,
amt)
SELECT glsalesjournal.loc,
glsalesjournal.glacct,
glsalesjournal.glsubacct,
( glsalesjournal.amt + hmisadd.amt ) AS sumAmt,
glsalesjournal.batchnbr,
glsalesjournal.salescontnbr
FROM glsalesjournal
LEFT OUTER JOIN hmisadd
ON ( glsalesjournal.loc = hmisadd.loc
AND glsalesjournal.glacct = hmisadd.glacct
AND glsalesjournal.glsubacct = hmisadd.subacct
AND glsalesjournal.batchnbr = hmisadd.batchnbr
AND glsalesjournal.salescontnbr = hmisadd.contractnbr )
GROUP BY glsalesjournal.loc,
hmisadd.loc,
glsalesjournal.glacct,
hmisadd.glacct,
glsalesjournal.glsubacct,
hmisadd.subacct,
glsalesjournal.batchnbr,
hmisadd.batchnbr,
glsalesjournal.salescontnbr,
hmisadd.contractnbr

脚本执行耗时超过2小时。即使我将记录限制为 100,所花费的时间也是相同的。

谁能指导我如何优化脚本。

谢谢

最佳答案

1) 看起来这是一个一次性查询,我在这里是正确的吗?如果不是,那么您每次都将相同的数据插入到 hmismain 表中。
2) 您正在对来自两个 单独表的字段进行分组,因此再多的索引也无济于事。 ONLY 有帮助的索引是以相同方式链接这两个表的 View 索引。

进一步说明:
有什么意义

      GROUP  BY glsalesjournal.loc,
hmisadd.loc,
glsalesjournal.glacct,
hmisadd.glacct,
glsalesjournal.glsubacct,
hmisadd.subacct,
glsalesjournal.batchnbr,
hmisadd.batchnbr,
glsalesjournal.salescontnbr,
hmisadd.contractnbr

您按相同字段对数据进行了两次分组
glsalesjournal.loc, hmisadd.loc
glsalesjournal.glacct, hmisadd.glacct,
...

从 GROUP BY 中删除重复项,它应该运行得很快

关于mysql - 为什么这个查询需要这么长时间才能执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com