代码之家  ›  专栏  ›  技术社区  ›  Teifion

在MySQL中存储二进制数组

  •  3
  • Teifion  · 技术社区  · 16 年前

    我有一个数组,叫做A,B。。。十、 Y,Z。虽然表格中有26列会很有趣,但我还是忍不住觉得有更好的方法。我已经考虑过创建第二个表,它的id值是第一个表中的row,数组中项目的id,然后是布尔值,但是它看起来很笨重而且令人困惑。

    有更好的办法吗?

    4 回复  |  直到 16 年前
        1
  •  6
  •   Marcus Downing    16 年前

    短答案,不。长答案,视情况而定。

    您可以以多种方式存储二进制数据—滥用数字、使用二进制或VARBINARY、使用BLOB或TINYBLOB等。如果数据大小已知,二进制类型通常比BLOB类型更快。

    然而,关系数据库的设计并不是为了对二进制数据进行任何智能化处理。在我曾经处理的一个项目中,有一个表,其中每个记录都有特定的二进制模式—存储为某种整数—搜索需要大量and、OR、XOR和NOT。它从来没有真正工作得很好,性能很差,它拖累了整个项目。回顾过去,我会采取完全不同的方法。

    所以,如果你只是想把数据放进去,然后再把它拿出来,那就太好了。如果你想用它来做任何聪明、强硬的事情。

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

        2
  •  2
  •   Lobstrosity    16 年前

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

        3
  •  1
  •   Can Berk Güder Pugalmuni    16 年前

    您可以尝试将其存储为TINYBLOB,甚至是无符号INT,但必须在代码中进行位掩蔽。

        4
  •  1
  •   Learning    16 年前