我的数据库中有一个位掩码用于存储项目列表。在此之前,我只是在屏幕上一一呈现这些项目。但是现在用户应该能够设置项目的顺序。我有一个我不喜欢的解决方案:使用一些分隔符(类似于 1|8|4|16)将 ids 列表存储在字段中。
谁能帮我找到另一个解决方案?
如果项目的数量限制在某个数字(例如 15),您可以将小数字列表存储在较大的数字类型中。从本质上讲,您的列表变成了 4 位组的“掩码”,其中每个组代表从 0 到 15 的数字,包括 0 到 15。对于 15 个项目,您需要 60 位来存储这样的列表。方便的是,大多数数据库都支持 64 位整数类型,因此您需要做的就是实现一个打包算法。由于项目数为 15,4 位可存储的状态数为 16,因此可以使用全零组合来表示“不存在”;所有非零组合代表项目的数量。
这比在字符串中存储数字列表要快得多,而且要紧凑得多。但是,它更难扩展,因为位组的长度(在本例中为 4)取决于您希望存储的项目数。