web-dev-qa-db-fra.com

Table séparée ou usermeta

Nous créons des champs personnalisés pour les utilisateurs, comme le revenu annuel, le sexe, la ville, le pays, etc. Il existe environ 10 nouveaux champs. Nous allons importer environ. 30 000 enregistrements pour chaque utilisateur par mois via une fonction d'importation CSV. Il y aura de nouveaux ainsi que la mise à jour d'anciens enregistrements. Le processus se poursuivra pendant un an. Dans ce scénario, veuillez suggérer quelle option choisir

Scénario 1: Créer une nouvelle table WordPress avec ces nouveaux champs

Scénario 2: utilisez wp_usermeta pour ajouter des champs personnalisés

En plus de l'importation au format CSV, nous allons extraire régulièrement les rapports des utilisateurs. Cela gardera la table wp_usermeta occupée.

S'il vous plaît suggérer quel scénario nous devrions aller loin et pourquoi? Ma recommandation est de choisir le scénario 1, car nous pouvons utiliser les fonctions de WordPress de manière assez efficace, même si la base de données est chargée.

1
Websavvy

L’avantage évident de user meta est que vous pouvez utiliser l’API WordPress pour enregistrer et récupérer ces colonnes supplémentaires, sans écrire de classes ou de requêtes SQL supplémentaires PHP. La table wp_usermeta est assez bien indexée. En fait, elle utilise une ligne par champ (plutôt qu'une colonne si vous utilisez une table personnalisée) et vous n'avez pas à vous soucier des performances. L'utilisation de la méta API utilisateur signifie généralement un développement plus rapide si vous souhaitez uniquement enregistrer des champs supplémentaires.

Mais finalement, cela dépend de la façon dont vous allez récupérer les données. Pour une table personnalisée, vous pouvez faire:

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

Cependant, ce sera un peu plus difficile avec la méta utilisateur, et vous devez faire une jointure:

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;

Comme vous pouvez le constater, cela vous donnera une ligne dans wp_users. Pour extraire une autre méta-valeur, vous devez appeler l'API en fonction de l'ID utilisateur que vous avez récupéré. (Notez que vous n'avez pas besoin d'une jointure gauche uniquement pour obtenir l'identifiant de l'utilisateur).

Par conséquent, si vous souhaitez uniquement exécuter des requêtes simples sur vos champs méta, vous pouvez utiliser les méta utilisateurs pour vous faire gagner beaucoup de temps de développement. Mais si écrire ces requêtes sera compliqué, il est possible que votre propre table soit un meilleur choix.

4
He Shiming