【问题标题】:TVP vs loop for each parameter每个参数的 TVP 与循环
【发布时间】:2013-08-29 16:01:29
【问题描述】:

我需要对购物车中的某些产品进行比较。购物车可以包含用户想要的任意数量的物品,但随着时间的推移,平均每个购物车大约有 5-15 件物品。

我的问题是关于优化/开销的。我需要检查每个产品所在的部门并确定运费。每个产品的部门与产品没有直接关系(即产品定义表中没有部门id列),但我可以根据产品id查询并获取部门id。

这就是我的问题所在。将id列表传递给存储过程并使用存储过程中的列表和表值参数之类的东西来查询现有表会更好(更少的开销/更快)吗?还是一次只查询产品 1 会更快(假设平均购物车大小在 5-15 的高端),获取部门 ID,然后进入下一个项目?

我从未使用过 TVP,我正在尝试从堆栈溢出和 msdn 网站上发布的其他一些问题中学习。因此,在我花费大量时间试图获得我想要的结果之前,我提出了这个问题。

【问题讨论】:

    标签: sql sql-server sql-server-2012 table-valued-parameters


    【解决方案1】:

    通常,TVP 应该更快(如果需要,可以更轻松地使其更快)。列表越大,与每个 ID 一个查询相比,TVP 应该越有利。

    设置使用 TVP 需要更多的开发工作,所以如果您的列表永远不会超过一个小列表(比如 3 个或更少),那么它可能不值得,但否则它绝对是一个更好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      相关资源
      最近更新 更多