簡體   English   中英

在MySQL中存儲多行數據與序列化數據

[英]Storing data in multiple rows vs serialized data in MySQL

我有一個問題,就是要以序列化形式(而不是表中的多行)保存大量數據。

在我的表格中,我存儲了有關我的App用戶的Facebook朋友的某些個人資料相關信息,即他們的Facebook用戶ID,姓名,出生日期。 對於每個朋友,我在表中創建多個行。 因此,例如,如果我的一個App用戶有5000個Facebook朋友,我將在表中插入5000行。 改為將所有朋友的數據以序列化格式保存在單個列中會更好嗎? 我不會單獨搜索/排序這些字段,也不會在這些列上有多個聯接。 而且,僅當某人更改其實際Facebook個人資料信息時,這些列才會很少更新。

我想知道是否可以在這里使用PHP序列化/反序列化函數來序列化特定用戶的整個Friends數組,並將所有數據存儲在單個列中。 使用此表時,這是否有助於優化我的表並為我提供更好的響應時間?

在MySQL中,絕對是每個值的單獨行,每個值都有單獨的列。 這樣,即使您沒有索引,也可以在這些列上創建索引,以及更輕松地按值查詢它們。 (您絕對應該在要查詢的值上具有索引。)

但是,在PostgreSQL中,您可以存儲序列化為JSON的值(通過json_encode ),並在其中索引單獨的值。

但是,無論哪種方式,您仍然需要將每個朋友記錄存儲在表的單獨行中。 就像您可以將5000個記錄數組的序列化值轉儲到數據庫中並每天調用它一樣。

如您所說,如果您不需要數據搜索,那么可以對數據進行序列化,但是這在您的應用程序上也可能是一個緩慢的過程,這不僅僅是一個建議,而是一個評估,例如,我有一些數據不是同質的,就不會對數據進行搜索並將其放在額外的表上,這意味着可能失去了對數據的控制權,然后我更喜歡序列化該數據並使用json進行處理,然后對於用戶來說很清楚

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM