web-dev-qa-db-ja.com

多数のカスタム投稿フィールドを格納する正しい方法

私のマルチサイトネットワークのサイトの1つで。カスタム投稿タイプ「イベント」を作成しています。各イベント投稿には約30〜50のカスタム投稿フィールドがあります。イベント作成者には多くのイベント関連データを入力する必要があるためです。

WPがカスタム投稿フィールドを格納するために複数の行を作成することに気付きました。そしてそれは私たちの 'Events'投稿のそれぞれがデータベースに挿入される〜100(あるいは多分それ以上)の行を持つことを意味します。

今、私たちはこれらの「イベント」投稿を多数作成することを期待しています。すべてフロントエンド経由で私たちのユーザーによって埋められました。私は何万ものユーザー作成イベントについて話しています。それぞれのイベントにはたくさんのカスタムフィールドデータがあります。

すべてのカスタムフィールドデータをJSON文字列としてエンコードし、それを1つのカスタムフィールドとしてデータベースに格納することをお勧めします。したがって、データベース内のイベントごとにエントリを1つだけ作成します。

ここまでは順調ですね。

問題:私たちが多数のイベントを持っているとどうなるか疑問に思っています、そして私たちはカスタム投稿フィールドに基づいてそれらを検索しなければなりません。 jSON文字列(テキスト)の中を検索するのが効率的ですか、それとも単に多数の行を検索するのが効率的ですか?.

あなたの回答を待っていて、ありがとう!

4
TheBigK

あなたはそれらをJSONとして、あるいは直列化された文字列としてエンコードすることができます(後者はあなたが既にWordpressに組み込まれた関数を使って行うことができます)。これらの両方のオプションにより、データベースの行数を抑えることができます。

ただし、これらのオプションは両方とも、データを検索する機能を大幅に妨げたり、将来必要になった場合は他の方法で有意義に扱うこともできます。

データベースに多数の行がある場合でも問題ありません。

あなたのサイトがそのが問題になるサイズになると、それに応じてハードウェアを増やす必要があります。カスタムフィールドがすべて独自の行にある場合よりも、エンコードされたデータを1行で処理する(または難解なクエリを実行してデータを取得する)ことで、サーバーにはるかに多くの負荷がかかります。

Wordpressはたくさんのデータを扱うことができます - それをさせてください:)

3
Tim Malone