2009-02-07 129 views
3

我有一个值的数组,名为A,B ... X,Y,Z.虽然它有26列在表中,我不禁感到有一个更好的方法。我已经考虑创建第二个表,其中第一个表的行的id值,数组中的项的id,然后是布尔值,但它看起来很笨重和令人困惑。在MySQL中存储二进制数组

有没有更好的方法?

回答

6

简答题,没有。很长的答案,这取决于。

您可以以一堆方式存储二进制数据 - 滥用数字,使用BINARY或VARBINARY,使用BLOB或TINYBLOB等。BINARY类型通常会比BLOB类型更快,前提是您的数据是已知大小。

但是,关系数据库并不是用来处理任何智能的二进制数据。在我曾经使用过的一个项目中,有一个表格,每个记录都有特定的二进制模式 - 存储为某种整数 - 搜索需要大量的AND,OR,XOR和NOT。它从来没有真正奏效,表现很糟糕,并且它把整个项目都压低了。回顾一下,我会采取一种完全不同的方法。

所以,如果你只是想放下数据并再次拔出,那就太好了。如果你想用它来做任何聪明,强硬的事情。

其他数据库供应商的情况可能有所不同。事实上,你是否考虑过使用别的东西代替数据库?某种对象持久性?

1

您可以尝试将其存储为TINYBLOB或UNSIGNED INT,但必须在代码中进行位掩码。

1

您可以将其存储为字符串并使用文本操作函数(重新)创建您的数组。

2

你可能的数组值是静态的吗?

如果是这样,请尝试使用MySQL的SET数据类型。

相关问题