web-dev-qa-db-ja.com

ポストメタカスタムフィールドによるフィルタリング - パフォーマンス

パフォーマンスのためにデータを構造化する方法に関するアドバイスをいくつか使用できます。私はwp_postmetaテーブルに各投稿のための1つのメタキーの下で直列化された配列として格納されたたくさんのカスタムメタデータを持つカスタム投稿タイプがあります。今、私はその投稿タイプからいくつかの投稿を取得し、保存したメタデータでそれらをフィルタリングする必要があります。

今、私ができると思うことができる唯一の方法はこのタイプのすべての投稿のためにすべてのメタデータを得て、それからそれらを大規模なPHP配列にアンシリアライズし、そしてforeachループを使ってチェックするそれらはすべて一つずつです。これは私に物事を行うための本当に悪い/遅い方法として私を襲った。

現時点では、計画全体を廃止し、独自のカスタムテーブルを使用して最初から始める必要があると考えています。しかし、それはそれほどワードプレスではありません、そしてそれは多くの仕事になるでしょう。私の他のアイデアは、この他の質問で提案されたことを行い(直列化配列としてのメタ値を持つ meta_query )、そしてすべてのメタ値を別々のメタキーに分けることです。そして、その質問に示すようにそれらを問​​い合わせます。私がそこで見ている問題は、そのクエリが特に速くなるようにも見えず、そして私のwp_postmetaテーブルが巨大になるだろうということです。

どんなアイデアでも大いに高く評価されるでしょう。

1
Dominic P

投稿のフィルタリングをもっと細かく制御したい場合は、メタ値を別々のキーに分割するのが最良の方法です。また、フィルタリング中に必要となる値だけを分離し、残りを直列化された配列に入れることもできます。

4
Joshua Abenazer