web-dev-qa-db-ja.com

個別のテーブルまたはユーザーメタ

年収、性別、市、国などのユーザー用のカスタムフィールドを作成しています。約10の奇妙な新しいフィールドがあります。私達はおよそ輸入します。 CSVインポート機能により、1か月に各ユーザーにつき30,000レコード古いレコードへの更新と同様に新しいものがあるでしょう。このプロセスは1年間続きます。このシナリオでは、どのオプションから選択するかを提案してください

シナリオ1:これらの新しいフィールドで新しいWordPressテーブルを作成します

シナリオ2:wp_usermetaを使用してカスタムフィールドを追加する

CSVインポートとは別に、定期的にユーザーのレポートを抽出します。これにより、wp_usermetaテーブルがビジー状態になります。

どのシナリオを遠くに進めるべきか、またその理由を教えてください。データベースの負荷は高くなりますが、ここではWordPressの機能を非常に効率的に使用できるので、シナリオ1に進むことをお勧めします。

1
Websavvy

user metaの明らかな利点は、余分なPHPクラスやSQLクエリを書かなくても、WordPress APIを使用してこれらの余分な列を記録および取得できることです。 wp_usermetaテーブルはかなりよく索引付けされています。実際、カスタムテーブルを使用する場合は1列ではなく、フィールドごとに1行を使用するので、パフォーマンスについて心配する必要はありません。ユーザーメタAPIを使用すると、余分なフィールドを記録するだけの場合は通常、開発期間が短縮されます。

しかし、最終的には、データの取得方法によって異なります。カスタムテーブルの場合は、次のことができます。

SELECT `appname`.* FROM `appname` WHERE `appname`.`income` >= 100000;

しかし、これはユーザーmetaではもう少し難しいので、参加する必要があります。

SELECT `wp_users`.* FROM `wp_usermeta`
LEFT JOIN `wp_users` ON (`wp_usermeta`.`user_id` = `wp_users`.`ID`)
WHERE `wp_usermeta`.`meta_key` = 'appname_user_income'
AND `wp_usermeta`.`meta_value` >= 100000;

ご覧のとおり、これによってwp_usersに1行が表示されます。他のメタ値を取得するには、取得したuser_idに基づいてAPIを呼び出す必要があります。 (注意、ユーザーIDを取得するためだけに左結合は必要ありません)。

したがって、メタフィールドに対して単純なクエリを実行するだけの場合は、ユーザーmetaを使用すると開発時間を大幅に節約できます。しかし、それらのクエリを書くのが複雑になるのであれば、あなた自身のテーブルを使うのがより良い選択である可能性があります。

4
He Shiming