举个例子,有一类数据,它大概有几百多种属性,属性的正好也只有 0 和 1 这两种可能。

在这种情况下,应该挑选哪个类型的字段来存储这个数据呢?需要满足以下条件:
1. 空间占用尽量小
2. 需要方便查询,比如我需要筛选出第 5 个、第 77 个、第 100 个属性...是 1 的数据(同时是 1 或者其中有一个是 1 这两种情况都需要查询)
3. 用多个 BIGINT 存储可行么
举报· 104 次点击
登录 注册 站外分享
10 条回复  
wellerman 小成 2024-9-8 10:48:05

请问,如果需要 MySQL 存储几百个二进制位的数据,该用什么类型

用多个字段存代价太大,这类属性大概还会动态增加,维护太不划算了。

只用一个 string 字段就行,存成 1-0,3-1,4-0,5-1,22-0,77-1,100-1 等,后面想要增加也不用动数据库。

查询条件 FIND_IN_SET('5-1', attrs) and FIND_IN_SET('77-1', attrs) and FIND_IN_SET('100-1', attrs)

或者如楼上,增加一个属性表。
vibbow 小成 2024-9-8 02:47:44

请问,如果需要 MySQL 存储几百个二进制位的数据,该用什么类型

@mainjzb 这么查就是性能地狱...
dode 小成 2024-9-7 22:16:39

请问,如果需要 MySQL 存储几百个二进制位的数据,该用什么类型

使用 id,type,value 数据库增加一个属性列,简单明了,查询方便
gainsurier 小成 2024-9-7 20:15:36

请问,如果需要 MySQL 存储几百个二进制位的数据,该用什么类型

> 用多个 BIGINT 存储可行么
可行,field1 ,field2 ,field3......
hiboshi 小成 2024-9-7 19:49:17

请问,如果需要 MySQL 存储几百个二进制位的数据,该用什么类型

能不能将这些数据位图化看看能不能解决,创建一个字段类型是 blob , 关键词: mysql bitmap
mainjzb 初学 2024-9-7 18:01:15
WHERE
field&1<<5  >0 &&
field&1<<77  >0  &&
field&1<<100 >0
jy28520 小成 2024-9-7 17:45:37
用 JSON 格式,检索的时候直接按照键查询为 1 的
akira 初学 2024-9-7 17:45:29
你可以看一下 set 和 bitmap
just1 小成 2024-9-7 17:29:55
bool?
yangg 初学 2024-9-7 17:04:31
你存属性为啥 描述是第 5 个,第 77 个,而不是属性 a ,属性 b ?,后面这种属性直接存 json
返回顶部