我需要在一个表中存储5个布尔值。 每个值都可以存储为tinyint(4)。所以,有5个tinyint(4)。 我正在考虑将5个布尔值放在一个tinyint(4)中。 我相信,每个人都知道比我更好,5位可以被保存在1个字节,没有问题:) 第一个值可以存储为0(假)或1(真),第二为0(假)或2(真),第三个为0或4,第四个为0或8,第五个为0或16. 因此,如果我们将这些值的总和存储在tinyint(4)中,那么我们完全知道5个布尔值。MySQL:在一列中存储多个布尔值。一个tinyint(4)-vs-几个tinyint(4)
For example, stored 21 -> 16 + 4+1.
So, if 21 is stored, we know that:
Fifth=true
Fourth=false
Third=true
Second=false
First=true.
我的问题是: 是否有意义只保留1个变量?我们赢得了数据库容量(字节)和性能(少了4列,但只有4个字节,而实际上在同一个表中使用了varchar(1000)),但是每次我们必须从“sum”中提取一个合适的布尔值“使用php函数,而且这经常发生(让我们说,当用户按下按钮)。 将布尔值作为总和存储在1列中是否有意义,所以你有7列而不是11列?
,价值观,这是明确的(因为该表有更多的行,仅仅2),都没有钥匙。
谢谢。
关于mysql.com,“位(M)大约需要(M + 7)/ 8个字节”。 (1 + 7)/ 8约为1个字节 - 与tinyint(4)相同。有什么不同? – Haradzieniec 2011-12-17 08:06:37