Как правильно организовать запрос сразу в несколько таблиц базы данных Wordpress?

Добрый день. Вопрос общего плана, касающийся выборки и обработки результатов из различных таблиц БД Wordpress (CMS на самом деле принципиальной роли не играет). Назрел он из желания воспроизвести и оптимизировать стандартные запросы движка, чтобы уменьшить нагрузку на БД.

Имеется запрос в таблицу wp_posts, в которой хранятся записи Wordpress:
$posts = $wpdb->get_results("SELECT * FROM wp_posts {условия выборки});

Поскольку метаданные для каждой записи в Wordpress хранятся в отдельной таблице wp_postmeta (которые жизненно необходимо вывести на экран пользователя), то для каждой записи создаются дополнительные запросы в смежную таблицу wp_postmeta:
foreach ($posts as $post) : 
{...определяются некоторые переменные...}
$thumbmeta = $wpdb->get_var("SELECT meta_value FROM wp_postmeta WHERE post_id = '$thumbid' AND meta_key = '_wp_attachment_metadata'");
{...внутри цикла foreach на основе этих метаданных производятся парсинг и манипуляции с полученными значениями...}
<?php endforeach; ?>

Вывод объединенных результатов из таблиц wp_posts и wp_postmeta осуществляется корректно, но, поскольку производится вызов в стороннюю таблицу wp_postmeta для каждой итерации цикла, общее количество запросов на сайте возрастает пропорционально количество выводимых записей. Интуитивно понятно, что для того, чтобы этого не происходило, внутри цикла вызовов во вторую таблицу делать не нужно.

Вопрос заключается в следующем: каким образом можно вывести связанные данные из нескольких таблиц таким образом, чтобы увеличение их количества не влияло на рост количества запросов в БД (как в стандартных get_posts в Wordpress)?
  • Вопрос задан
  • 3434 просмотра
Решения вопроса 1
shcherbanich
@shcherbanich
Программист
в цикле составляешь запрос, а выполняешь его 1 раз после
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы