2011-06-19 20 views
1

這裏是我的情況:服務器負載:MySQL的與PHP函數

現狀:

我的用戶,我必須在多個類別中每一個用戶的多個值。

我看到它的方式,我有兩個選擇:

一,建立一個新的表 '價值':

user_ID category value 

    ...  ...  ... 
    5   1  aaa 
    5   1  bbb 
    5   2  ccc 
    5   2  ddd 
    5   2  eee 
    6   1  xxx 
    6   2  yyy 
    6   1  zzz 

II。在我與用戶實際的表 - 「用戶」:

user_ID (unique)   values 
     5    aaa,bbb$$ccc,ddd,eee 
     6    xxx,zzz$$yyy 

...在我的設置保存爲文本,並解析它與「」分裂的價值觀和‘$$’劃分類別。

到目前爲止,我一直在做一些小事情的第二種方式,但現在我期待很多這個數據庫的值和類別,我想知道哪些會給我更少的服務器負載 - 有一個非常巨大的MySQL數據庫表並在每個頁面上查看它們以查看哪些值屬於當前用戶;或從一個相對較小的表中獲取所有且僅有的值,但每次使用PHP解析字符串以使其可用?

+2

我會說第一種方法在更新值和插入時更靈活 – Ibu

+0

第二種方法在服務器上很「輕」,因爲字符串解析相對較少。爲什麼不將它存儲爲JSON而不是逗號分隔的字符串。未來它會更加靈活一些,並且具有與PHP內置的相同的便利功能。 – Matt

+0

JSON對我來說是一個全新的概念,我甚至不知道要去研究它,但我現在就做!聽起來很適合我提到的小事。 – choephix

回答

4

第一種方法 - 那是怎樣一種關係數據庫是建立。您還可以獲得索引的額外好處,即使使用相當大的數據集也可以保持其速度。

此外,它允許數據從另一個方向來查詢 - 我拿所有的用戶有2類等於「EEE」

+0

謝謝,這是有道理的。 – choephix

0

插入到作爲現場數據的未知量,因爲一個非常糟糕的主意你不知道如何確定它的尺寸。此外,您的數據庫無法以任何有用的方式對其進行索引,並且隨着系統的增長,性能將會下降。

把類別和值在一個單獨的表很好地進行擴展和像亞當已經說了,就是一個關係數據庫是怎麼一回事。

你可能想谷歌「數據庫規範化」,並瀏覽了一些成果獲得更多信息。

+0

謝謝你們,我現在意識到這實際上是一個愚蠢的想法。這非常有幫助。 – choephix