【发布时间】:2011-06-11 11:41:27
【问题描述】:
我们有一个计划表,每个计划都有许多服务。我们想要一种快速找到不包含重复服务但组合包含某些服务的计划组合的方法。
例如计划表
id | service_1 | service_2 | ...
---------------------------------
1 | true | true | ...
2 | true | false | ...
3 | false | true | ...
例如包含 service_1 和 service_2 的有效组合
更新
如果有 2 项服务,而我同时需要这两项服务,我们最多可以合并 2 行(或计划),因为它们每行至少可以包含 1 项服务。
id | service_1 | service_2 | id | service_1 | service_2 |
---------------------------------------------------------
1 | true | true |NULL| NULL | NULL |
2 | true | false | 3 | false | true |
更新
它目前通过自我左加入自身进行积极的修剪或行。查询是根据服务数量动态生成的。它会创建有效连接条件的排列,使其不实用。
目前费用按计划数量^服务数量的顺序排列。
我最感兴趣的是解决这个问题的其他方法,不一定是对当前方法的改进。
【问题讨论】:
-
请贴出你目前写的代码。人们通常不喜欢只为您编写代码。事实上,这是一个工作描述,而不是一个问题。
-
信息不足。您将在搜索中指定多少服务,以及允许使用多少计划来回答查询?
-
@mitch 刻薄,嗯? “它目前通过自我左连接自身与积极的修剪或行来工作。”对我来说,这充分描述了一个可能的当前解决方案,我可以想象它如何花费“计划数量 ^ 服务数量”。
-
@cyberkiwi:我的评论是在海报更新他的问题之前发表的。请把你的事实弄清楚。
-
@Mitch - 这个问题 (rev1) 具有足够的挑战性,可以攻击。如果您不同意,请随时查看问题的背面,或者您可以投反对票以查看其他人是否同意。
标签: sql performance optimization postgresql