1

テーブル内の複数の行ではなく、シリアル化された形式で大量のデータを保存することに関連する質問があります。

私のテーブルには、アプリ ユーザーの Facebook の友達、つまり、Facebook ユーザー ID、名前、生年月日に関する特定のプロファイル関連情報を保存します。友達ごとに、テーブルに複数の行を作成しています。たとえば、私のアプリ ユーザーの 1 人に 5000 人の Facebook 友達がいる場合、テーブルに 5000 行を挿入します。代わりに、すべての友人のデータをシリアル化された形式で 1 ​​つの列に保存する方がよいでしょうか? これらのフィールドを個別に検索/ソートしたり、これらの列に複数の結合を行ったりしていません。また、これらの列は、誰かが実際の Facebook プロフィール情報を変更した場合にのみ、非常にまれに更新されます。

ここで PHP のシリアル化/非シリアル化関数を使用して、特定のユーザーの Friends 配列全体をシリアル化し、そのすべてのデータを 1 つの列に格納できるかどうか疑問に思っていました。テーブルを最適化し、このテーブルを操作するときの応答時間を短縮するのに役立ちますか?

4

2 に答える 2

1

MySQL では、値ごとに個別の列を持つ個別の行が絶対に、間違いなく進むべき道です。そうすれば、インデックスがなくても、これらの列にインデックスを作成したり、値でより簡単にクエリを実行したりできます。(クエリを実行する値には必ずインデックスが必要です。)

ただし、PostgreSQL では、JSON に (, を介してjson_encode) シリアル化された値を格納し、それらの内部の個別の値にインデックスを付けることができました。

ただし、いずれにしても、すべてのフレンド レコードをテーブルの個別の行に格納する必要があります。5000 個のレコード配列のシリアル化された値をデータベースにダンプして、1 日で済むわけではありません。

于 2013-06-15T00:03:31.963 に答える
0

あなたが言ったように、データ検索が必要ない場合は、データをシリアル化しても問題ありませんが、これはアプリケーションのプロセスが遅くなる可能性もあります。たとえば、提案、評価以上のものがあります。同種ではなく、データが検索されず、余分なテーブルにあるということは、おそらくデータの制御が失われることを意味します。そのデータをシリアル化し、jsonを使用して処理することを好みます。ユーザーにとっては明らかです

于 2013-06-15T00:04:53.313 に答える