Я редко не согласен с другими хорошо осведомленными пользователями, но в этом случае я ничего не могу поделать. На мой взгляд, называть использование неосновных таблиц базы данных плохой практикой как таковой просто неправильно.
Выбор того, использовать ли основные таблицы или добавить свои, зависит от нескольких факторов.
Время выполнения запроса зависит от размера таблицы. Следовательно, если вы планируете хранить значительные объемы данных, отдельная таблица, обслуживающая только этот один тип определенного набора данных, неизбежно будет более эффективным решением.
Если вы храните много регулярных сообщений или CPT вместе с этими конкретными наборами данных, wp_posts
а также wp_postmeta
можете быстро расти.
Для меня этот выбор в конечном итоге зависит от того, насколько «посты» данные. Должен ли он поддерживать автора, комментарии, исправления, выдержки или тому подобное? Если так, я пойду с CPT и / или основной функциональностью. Если нет, я пойду с отдельными таблицами ради использования ресурсов и эффективности.
Если бы представление Юджина было верным, ни один из существующих хорошо написанных плагинов не добавил бы свои собственные таблицы, что, к счастью, не так.
Лучше всего использовать таблицы ядра базы данных WP
$wpdb
класса .wp_options
и принуждение разработчика плагина тщательно учитывать тип создаваемых / хранимых данных - является ли это CPT? это таксономия? это пост мета?WordPress предоставляет плагинам возможность добавлять таблицы в свою базу данных.
Однако для тех случаев использования, когда требуется отдельная таблица БД, обязательно используйте метод, который WordPress предоставляет для добавления вашей пользовательской таблицы в базу данных WordPress , особенно для того, чтобы вы могли воспользоваться мощным
$wpdb
классом. Обратите внимание на информацию / предостережения в этих списках записей Кодекса:Таким образом, можно сделать следующие выводы:
источник
$wpdb
(использование его с неосновными таблицами подразумевалось в моем ответе, я бы не хотел пропустить этот класс)Неосновные таблицы базы данных необходимы, если ваши данные более сложны, чем пост-модель WordPress, они будут огромными, и в них будет много метаданных, которые будут искать.
Формат EAV, который WordPress использует для своей мета-записи, не подходит для многокритериального поиска.
Если вы разделите свою мета на множество записей, у вас будет много записей на пост в мета-таблице постов, и поиск любого поста с помощью метасов будет намного медленнее.
Если вы храните все мета-последовательности, сериализованные в массиве, и у вас есть только одна запись в пост-мета, на этот раз вы будете вынуждены выполнять только текстовый поиск внутри этой мета, и вы не сможете использовать операторы сравнения непосредственно в вашем sql-запросе.
Не большая проблема, если ваш плагин не будет иметь тысячи записей и связанных мета.
Но главная проблема, если ваш плагин собирается делать что-то большое.
Ваша ситуация, имя файла в качестве независимой записи и 3 записи метаданных, прикрепленных к этой записи, не кажутся такими уж большими. Для этого вы можете использовать таблицу сообщений WordPress и таблицу метаданных.
НО, если люди собираются много раз искать эти 3 мета, ОСОБЕННО в сочетании, то я бы порекомендовал вам создать отдельные таблицы.
С этим форматом будет достаточно одной таблицы с одной записью, которая также содержит все мета, и будет молниеносно запрашивать.
Кстати, если вы используете таблицы WordPress, а также используете кэширование запросов, пользователь, который ищет ваши данные, со временем будет кэшироваться и будет меньше загружаться. Но это не так разумно, как делать отдельные таблицы.
источник
Вы можете загрузить свои файлы в медиа-библиотеку. Каждый элемент в медиатеке хранится в ней в виде
wp_posts
таблицы. Это означает, что каждый файл может иметь метаданные. Вы можете сохранить столько информации, сколько вам нужно для каждого файла вwp_postmeta
таблице, используя API метаданных .Да, создание собственной таблицы - плохая практика, если вместо этого вы можете использовать основные функции.
источник
источник