我从 TSQL 的角度来看这个问题,但是任何建议都将不胜感激。
设想
我有 2 组标准来识别要选择的仓库中的项目。
查询 1 返回 100 项
查询 2 返回 100 项
我需要选择查询 1 中返回的 100 项中的任意 25 项。
我需要选择查询 2 中返回的 100 项中的任意 25 项。
- 查询 1/2 中的项目永远不会相同。
每个项目都存储在仓库的一个部分中。
仓库的一部分可能包含许多物品。
我希望选择 50 个项目(每个查询 25 个)以减少我必须访问以选择项目的段数。
建议的方法
我最初的想法是结合两个结果集并生成一个列表
分段 ID,NumberOfItemsRequiredInSegment
然后,我将从每个查询中选择 25 个项目,优先选择 NumberOfItemsRequiredInSegment 最多的段中的那些。
我知道这不是最优的,但很容易实现启发式。
问题
1)我怀疑这是一个标准的组合问题,但我不认识它..也许是多个背包,有人认识吗?
2) 是否有更好的(容易实现的)启发式或解决方案——最好是在 TSQL 中?
非常感谢。