表单数据中包含了大量(100个)多选选项类型字段,每个字段最多可以选择100个,使用数组字段存储合理吗

表单数据中包含了大量(100个)多选选项类型字段,每个字段最多可以选择100个,使用数组字段存储合理吗, 用array_contains测试下来查询很慢,600W数据量测试下来需要8秒,

,有更好的方案吗

采用不同的字段存储性能是最快的。可以测试一下flat json功能是否满足当前的性能要求

我看了一下flat json应该解决不了这个问题。
我在补充一下cdp_user2表中有100个数组字段,item1_id,…,item100_id;都是 ARRAY<VARCHAR ( 255 )>类型,用户查询可能会按多个字段组合,比如:select count(*) from cdp_user2 where array_contains(item2_id, ‘aaron76’) and array_contains(item3_id, ‘aaron76’)…,怎么能支持cdp_user2 1千万的数据量查询,如果用关系型数据库,可能就是把数组字段,单独提到一张表里面,做成一对多关系。

不管采用数组还是json,慢的原因都是在解析这里。如果flat json满足不了性能需要,需要拆分成具体的字段存储。

数据进行预处理,维护(字段 + 选项)到id的映射,所有的array字段整合为一个bitmap字段试一试?