2013-12-07 71 views
0

這是關於如何以最有效的方式在數據庫中存儲內容。 這裏最重要的事情並不是儘可能地節省空間 - 重點在於使用這些數據的最快方式。如何存儲在數據庫中有用的多項選擇?

所以一般的一件容易的事情:

我們有10個選擇無線電盒 - 我們可以選擇全部或我們可以選擇無 - 或者只是選擇一個/一些他們。

所以一般我看到了兩個常規選項保存結果在我的數據庫:

A)只是要10場在我的桌子TINYINT(1),並設置爲0或1

B)我可以使用ONE Int(7),它有機會將結果解碼爲二進制 - fE如果您選擇選項3,則可以選擇其中的00101001.

所以問題是哪個更有意義?

B將只需要4個字節,而A將需要8個字節 - 此外B需要一個簡短的PHP函數來解碼二進制文件。

現在的問題現在的問題是,如果數據庫得到一個查詢的地獄,你認爲遲早會有更好的用法嗎?

+0

如何使用所有可能的選項枚舉? –

+1

這是2^10的選項,或1024選項... – Konerak

+0

確切 - 所以我從來沒有想過ENUM將在這裏真正使用:/ – Kris

回答

0

它可能會更好有10個不同的領域,除非你知道每個查詢將始終需要所有10個字段。

程序員會更容易(不一定要計算位向量)。添加新列或刪除它們更容易。您可以在一些列上放置小而快的索引,但不是全部。

+0

我知道我總是需要全部10個。 – Kris

相關問題