【发布时间】:2021-04-22 16:29:02
【问题描述】:
给定一组位序列,找到包含给定数量 0 的位序列的最快方法是什么?我可以为此使用按位操作/掩码操作吗?
详情:
- 所有位序列的长度相同 (287)。
- 当我说“最快”时,我指的是性能方面,而不是最快的编写/维护。
- 这些序列实际上会存储在 Oracle 和 SQL Server 中的单独记录中,并且这个操作可能会在查询中执行,但我想我可以实现它,一旦我理解了逻辑。
更多详情:
这是一种在具有性能限制的预订系统中查找可用性的方法。我认为的解决方案是将可用性存储为比特串或由 1 和 0 组成的数字,每个比特代表 5 分钟的间隔。
当我必须找到一个 30 分钟的时隙时,我需要找到 6 个连续的 0。如果您有更好的想法,我会非常有兴趣探索它们。
【问题讨论】:
-
“预订间隔”、“30 分钟时隙”... - 为什么不使用 DATE 数据类型?对我来说看起来 自然 (而 287 位的字符串则不是)。但是,嘿,我知道什么,只是说。
-
嘿!感谢回复。正如我所说,“如果你有更好的想法,我会非常有兴趣探索它们。”您将如何使用日期时间来实现这一点?我想使用这种表示来保持单行上的单个“一天”的可用性,以提高性能,但我可能完全错了。