2009-02-07 127 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數據類型。

相關問題