【发布时间】:2011-07-20 17:22:37
【问题描述】:
我在 Sql 中有一个场景,我遵循架构。
如果我在 Item 表中有 3 个项目,则所有项目的一个唯一组合将分配给用户。例如:
项目: 1 2 3
那么组合将是:{1}、{2}、{3}、{1,2}、{1,2,3}、{1,3}、{2,3) 都是唯一的组合。 这些组合中的任何一个都将分配给单个用户。
现在我想找出给定的组合属于哪个用户,我怎样才能找到它?例如:我将传递项目列表 {2,3} 然后它应该从表 UserItemCombinations 返回具有该组合的用户 ID。 {2,3} 作为逗号分隔的字符串传递给 SP。我以 3 个项目为例,这个表可能包含 n 个项目。用户数量将取决于组合的数量。例如:三个项目有 7 个组合,因此用户表将有 7 个用户。
【问题讨论】:
-
n 可以有多大?例如,如果限制为 32 或 64,您可以使用位掩码以获得更好的性能
-
@Dmitry:它可能会达到 1k 或更多
-
UserItemCombinations 中的数据应该多久更改一次?编写将在用户的某些字段中缓存组合的 SP 或触发器是否有意义?那是因为我猜,如果查询是从头开始的,那就太费时了。
-
@Dmitry:该表中不会有任何更新,无论是删除还是添加,但即使这样也很少见
标签: sql-server stored-procedures mapping combinations