我需要在 1 个表中存储 5 个布尔值。每个值都可以存储为 tinyint(4)。所以,有 5 个 tinyint(4)。我正在考虑将 5 个布尔值放入一个 tinyint(4) 中。相信大家都比我更清楚,1个字节可以保存5位是没有问题的:)第一个值可以存储为0(false)或1(true),第二个值可以存储为0(false)或2( true),第三个为 0 或 4,第四个为 0 或 8,第五个为 0 或 16。因此,如果我们将这些值的总和存储在 tinyint(4) 中,我们确切地知道 5 个布尔值。
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 个变量是否有意义?我们赢得了 db 卷(字节)和性能(少了 4 列,但这只是 4 字节,而您实际上在同一个表中使用了 varchar(1000)),但是每次我们必须从“sum”中“提取”一个适当的布尔值" 使用 php 函数,这种情况经常发生(比如当用户按下按钮时)。将布尔值存储为 1 列中的总和是否有意义,所以您有 7 列而不是 11 列?
很明显,该值不是键(因为该表的行数要多得多,只有 2 行)。
谢谢你。