Отдельная таблица или usermeta

Мы создаем пользовательские поля для пользователей, такие как годовой доход, пол, город, страна и т. Д. В нем представлено около 10 нечетных новых полей. Мы будем импортировать ок. 30 000 записей для каждого пользователя через месяц через функцию импорта CSV. Будет новое, а также обновление старых записей. Процесс будет продолжаться в течение года. В этом сценарии, пожалуйста, предложите, какой вариант выбрать из

Сценарий 1. Создайте новую таблицу WordPress с этими новыми полями.

Сценарий 2. Используйте wp_usermeta для добавления настраиваемых полей.

Помимо импорта CSV, мы будем регулярно получать отчеты о пользователях. Это приведет к тому, что таблица wp_usermeta будет занята.

Пожалуйста, предложите, какой сценарий нам нужно уйти далеко и почему? Моя рекомендация – перейти к сценарию 1, так как здесь мы можем использовать функции WordPress довольно эффективно, хотя загрузка базы данных будет высокой.

Очевидным преимуществом user meta является то, что вы можете использовать WordPress API для записи и получения дополнительных столбцов без написания дополнительных PHP-классов или SQL-запросов. Таблица wp_usermeta довольно хорошо проиндексирована, на самом деле она использует одну строку для каждого поля (а не один столбец, если вы используете пользовательскую таблицу), и вам не нужно беспокоиться о производительности. Использование мета-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 , чтобы получить другое метазначение, вы должны вызвать API на основе полученного вами user_id. (Обратите внимание: вам не нужно левое соединение, чтобы получить идентификатор пользователя).

Поэтому, если вы хотите просто запускать простые запросы в своих мета-полях, вы можете использовать мета-мета, чтобы сэкономить вам много времени на разработку. Но если писать эти запросы будут сложными, возможно, что использование вашей собственной таблицы было бы лучшим выбором.