我正在寻找一种在 MySQL 中实现多重集(“包”)的标准方法。这个多重集可能包含的值只是字符串。
背后的原因是计数;我有一个我无法预先定义的事件列表,我希望计算它们的发生次数。例如,在 Python 中,这可以通过Counter来完成。
以前我问过一个关于MySQL 中的集合的问题;到目前为止,我发现的最佳解决方案是使用TEXT
数据类型将逗号分隔的字符串放入数据库中,然后使用FIND_IN_SET
它来查看元素是否在集合中。但是,此解决方案不适用于多重集,因为在文本字段中存储一个字符串,例如一千次,然后计数,效率不高......
用例是这样的:每当我的(Python)脚本运行期间发生与给定行相关的事件时,我希望访问数据库并将该事件添加到数据库中的每一行;最后,我希望计算每一行中每个事件的发生次数。对我来说更重要的是数据的插入将是有效的(与最终计算相比)。
编辑
我的原始数据表包含数千行,每行都应该有一个“多集字段”(一种或另一种方式)。每个这样的多重集可能包含不会太多(例如,少于 20 个)可区分值,但是每个这样的值可能在多重集中出现很多(例如,超过 500 个)次。因此,等待稍后计算的每个值的字符串(或其他表示形式)可能效率低下(据我所知)。例如,一个不同的表,其中任何(原始)行的任何事件都会生成一行,它可能会很快增长到非常大(数百万行)。