我处于一种情况,我需要对购物车中的某些产品进行一些比较。购物车可以拥有用户所需的物品数量,但随着时间的推移平均每辆购物车约为5-15件。
我的问题是关于优化/开销的问题。我需要检查每个产品所在的部门并确定运费。每个产品的部门与产品没有直接关系(即产品定义表中没有部门ID列),但我可以根据产品ID查询并获取部门ID。
这就是我的问题所在。将id列表传递给存储过程并使用存储过程中的列表与表值参数之类的内容查询现有表会更好(开销更少/更快)吗?或者一次只查询产品1会更快(假设购物车尺寸在5-15的高端),获取部门ID,然后转到下一个项目?
我从未使用TVP,我正在尝试从堆栈溢出和msdn网站上发布的其他一些问题中学习。因此,在我花费大量时间试图获得结果之前,我想要提出这个问题。
答案 0 :(得分:1)
一般来说,TVP应该更快(如果你需要的话,更容易让它更快)。列表越大,TVP越有利于每个ID一个查询。
设置使用TVP需要更多的开发工作,所以如果你永远不会有一个小的列表(比如3或更少),那么它可能不值得,但除此之外它肯定是一个更好的方法。