我有一个包含 300.000 多条记录的表。
我想对一小部分记录(0.5% 或更少)添加一些“标记”;
什么是最好的选择:
使用 INT 字段并将其视为二进制字符串
marker 0: xxxxx1会被存储为1,
标记 0 和 3:xx1001 将存储为 9,ecc..
使用 SET 数据类型
使用引用表并加入它们;像
我的数据:id | ..
标记:id |标记
我的数据_标记:我的数据_id | markers_id
添加其他字段(我不喜欢用零填充表格的想法)
我发现第一个选项“可爱”且易于实现,但以后更改可能会有问题。
我不知道如何评论第二个选项,因为我从未使用过该数据类型。
我猜我会选择第三种选择......
有什么建议吗?
最佳答案
鉴于您说只有 0.5% 的记录会有任何标记,您最好将标记拆分到它们自己的子表中。一旦你有了那个子表,你就不会浪费几乎那么多的空间并且可以使用一个 int,一个文字 mysql bit field ,每个标志字段等...
例如假设只有 8 个标志,您需要一个 1 个字节的 tinyint 字段。那会浪费大约 290kbytes 的存储空间。将其分离到自己的子表中,新表会有一点点开销,然后大约 10k 的存储空间用于各个标志记录。
关于mysql - 向大表添加列 : datatype or INT or reference table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778530/