【问题标题】:Store values for multiple rows in table在表中存储多行的值
【发布时间】:2016-02-18 23:02:41
【问题描述】:

我有一个每天运行的存储过程,用于为我们的业务提取库存数量。我被要求更新存储过程,以提取有关已在零件上写入采购订单的某些行的信息。比如

Tbl A(本地服务器)

partnumber    poNumber  ReceivedDate   PartStatus

Tbl B(链接服务器)

poNumber      partnumber  ReceivedDate

我只需要查看带有TblA.PartStatus = "Shipped" AND tblA.poNumber = tblB.poNumber THEN 的项目,看看TblB.ReceivedDate 是否不为空。

如果TblB.ReceivedDate 不为空,我需要设置TblA.ReceivedDate = TblB.ReceivedDate

如何将其设置为循环遍历表或执行单个连接语句以加快速度?

【问题讨论】:

  • 两张表的关键字段是什么? poNumber 是关键字段吗?
  • 您好文森特,遗憾的是,所需的字段都不是表中的关键字段!

标签: sql stored-procedures sql-server-2012


【解决方案1】:

一种方法是:

UPDATE a SET a.ReceivedDate = b.ReceivedDate
FROM tblA AS a
    INNER JOIN tblB AS b 
        ON (a.poNumber = b.poNumber AND a.partNumber = b.partNumber AND a.partStatus = 'Shipped' AND b.ReceivedDate IS NOT NULL)

【讨论】:

  • 哈立德您好,感谢您的回复!这确实有效,但考虑到完成此拉动大约需要 15 分钟,我想对其进行优化!有什么建议吗?这些字段都不是任何一个表中的键,我不知道这对这个讨论是否有任何价值。
  • 我相信在 ON 子句中引用的列上创建索引应该可以提高性能
猜你喜欢
  • 1970-01-01
  • 2020-12-03
  • 2011-04-17
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多