2014-01-07 60 views
1

顯而易見的答案是,將一列作爲字符串是毫無意義的,因爲您無法對其執行任何體面的數據庫查詢。但是,說你想存儲用戶信息,例如,他們的用戶名,姓名和電子郵件(等等)的隱私偏好。在運行時處理的數據庫很多列vs一個字符串列

將此作爲單列命名,例如「設置」會更好地提高性能,因爲這些變量不會與任何其他模型一起使用?

這個變量可能類似於「{username => true,name => true,email => false}」,並且可以在運行時處理。

+0

它取決於你使用哪個運行時,如果你使用C++,你可以用整個數據庫存儲文件(笑話) –

回答

0

您創建的字符串會比存儲單獨的列消耗更多空間,因此錶行會更大,並且數據庫服務器上的緩存效率會更低。我根本沒有看到潛在的性能優勢。

我認爲,在此可以接受的數據庫實踐的唯一情況是:

  1. 在那裏你永遠只把代表許多數據元素的信息單一紡織機械展覽會的字符串:例如,如果你想存儲您收到或傳輸的JSON或XML消息的副本。
  2. 如果數據項表示一組事先不知道的數據元素,並且由於某種原因您沒有資源使用類似於鍵值存儲的內容。
0

在性能上有許多因素需要考慮。如果連接或數據庫服務器速度慢,那麼您可能會正確執行您的建議(以提高性能)。

但請記住,您仍然需要解析字符串。

在大多數專業項目中,這將被認爲是可怕的做法。像你這樣做,使代碼非常不可維護。它打開了使用相同領域的各種東西,如喜歡的顏色,等等。

如果你在地下室修修補補,那就去做吧,但要知道如果你想要寫一段生活的代碼是很可怕的。