2014-10-09 47 views
0

我在想如果我有一個表meta_description(varchar 300),meta_tags(varchar 300)和meta_title(varchar 200)...我可以「加入「所有這些列只是一列」extra_information「(長文本),並保存在這裏相同的信息,但也許在JSON格式?單列或單獨的列額外的數據 - mysql

這是否便利,爲什麼:)?

這個字段對我來說不是很重要,我絕不會通過這些信息進行任何查詢來搜索或排序結果。舉例來說,元標記只是逗號分隔的文本,我不需要在這方面做一些關係表。

我想知道的是,這將節省我的數據庫空間或將工作更快一點,或類似的東西......但如果你告訴我,有5列,而不是隻有一個是相同的MySQL當然會有5列...

非常感謝!

+0

如果不知道你將如何處理數據,很難說100%,但如果你希望根據描述或標籤或標題進行選擇,你應該將它們放在單獨的列中。此外,如果'meta_tags'是一個值列表,它應該在一個相關的表中 - MySQL具有['FIND_IN_SET'](http://dev.mysql.com/doc/refman/5.0/en/string-functions。 html#function_find-in-set)函數來幫助您在逗號分隔字符串中查找值,但如果表格變大,它將會非常緩慢。 – 2014-10-09 15:16:07

+0

您可以使用CONCAT將您的列分組爲單個結果:'SELECT CONCAT(meta_description,meta_tags,meta_title)as extra_information ...' 對於問題的下一部分,它對我來說還不夠清楚... – Cyrbil 2014-10-09 15:16:30

+0

爲什麼不把所有東西都存儲在JSON中根本不需要數據庫?一旦你明白了爲什麼不起作用,你可以在小問題上應用同樣的答案。 – GolezTrol 2014-10-09 15:33:54

回答

1

答案歸結爲:MySQL是否必須使用您的數據?

如果將所有日期連接在一列中,那麼將其作爲JSON或逗號分隔的或不是的,它對於任何MySQL操作幾乎都沒有限制。你當然可以SELECT它,但它很難搜索,分組或根據該列內的任何東西排序。所以,你絕對確信MySQL不會看到數據本身,只會返回一些帶有數據的列,然後去做。 好處是,表格結構不必因數據變化而改變。並且列結構非常乾淨

如果您需要在SQL查詢中對其進行過濾,排序,分組或對其執行任何操作,請將其保留在單獨的列中。

+0

+1。我同意。如果MySQL永遠不會*必須對存儲的數據執行操作(除了存儲整個值並檢索整個值),那麼單個列就可以。 (就好像MySQL將該列視爲一塊數據一樣,例如它就像是.jpg圖像)。但是,如果MySQL需要對數據執行操作,那麼您當然需要MySQL需要的單個部分操作存儲在單獨的列中。 – spencer7593 2014-10-09 15:50:20