我有一个名为A,B ...... X,Y,Z的值数组。尽管表中有26列,但我感到有一种更好的方法。我考虑过创建第二个表,其中id值为第一个表中的row,数组中项目的id,然后是布尔值,但它似乎很笨拙而且令人困惑。
有更好的方法吗?
答案 0 :(得分:6)
简短的回答,没有。答案很长,这取决于。
您可以通过多种方式存储二进制数据 - 滥用数字,使用BINARY OR VARBINARY,使用BLOB或TINYBLOB等。如果您的数据是已知大小,则BINARY类型通常会比BLOB类型更快。
但是,关系数据库并非设计用于使用二进制数据执行任何智能操作。在我曾经工作的项目中,有一个表,其中每个记录具有特定的二进制模式 - 存储为某种整数 - 并且搜索需要大量的AND,OR,XOR和NOT。它从来没有真正发挥得很好,性能很糟糕,并且它使整个项目失效。回顾过去,我会采取完全不同的方法。
因此,如果您只想删除数据并再次将其删除,那就太棒了。如果你想把它用于任何聪明,艰难的事情。
其他数据库供应商的情况可能有所不同。事实上,您是否考虑过用其他东西代替数据库?某种对象持久性?
答案 1 :(得分:2)
您的可能数组值是否为静态?
如果是这样,请尝试使用MySQL的SET数据类型。
答案 2 :(得分:1)
您可以尝试将其存储为TINYBLOB,甚至是UNSIGNED INT,但您必须在代码中进行位屏蔽。
答案 3 :(得分:1)
您可以将其存储为字符串并使用文本操作函数来(重新)创建数组。