繁体   English   中英

使用BIT值将多列合并为一列

[英]Combining multiple columns into one using BIT values

在给定的表中,我有多列带有“是” /“否”值的列...

Table someTable

 is_shipped (ENUM) 'n','y' DEFAULT n
 is_paid_for (ENUM) 'n','y' DEFAULT n

将上述字段作为BIT(2)列,将两个字段有效地组合为一个字段,是否是一个更好的主意?

Table someTable
 is_shipped_paid BIT(2)

该位的每个值将决定二进制标志的值在哪里?

'0' = Not Shipped
'1' = Shipped

因此,以上列的值'01'表示该商品未发货且已付款...等...

有什么想法/评论/批评吗?

因此,您每行要保存两个或三个字节,请考虑完全拥有一行至少需要26个字节的存储空间,并且要使一个表可用,您至少需要10%的可用空间,另外还要有20%的空间才能创建一些索引可访问的行,则节省不大。

尤其是考虑到通过标准SQL查询和更新这些字段所带来的复杂性时。

还要考虑一下,这些天来,您以TB的价格购买磁盘,每GB大约需要$ 150,并且在此处保存了几个字节,似乎并不值得打扰。

在1980年代,您花了大钱购买了K磁盘,这种优化很常见:大多数大型数据中心都在接下来的30年中试图解决所引起的问题。

如果您确实需要节省磁盘空间,那么不建议您启用INNO DB压缩,然后让数据库完成工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM