Intereting Posts
WP Rest API V2 Custom Тип сообщения Категория Количество сообщений Получить привязанность с помощью пули Функция внезапно перестала работать Скрыть таксономию, когда термин пуст (источник) Замените пул родительских страниц на # Что произойдет, если я удалю все строки, представляющие пост-ревизию, из таблицы сообщений в базу данных WordPress? Я хочу отправить push-уведомление сразу после публикации нового сообщения Какие плагины используются на wordpress.com Как объединить два пользовательских типа сообщений в единую постоянную структуру Альтернатива встроенным функциям меню WordPress Присвойте описание по умолчанию новым терминам в рамках пользовательской таксономии Изменить порядок элемента в разделе «Создать» на панели администратора. Как конвертировать контактную форму 7 в сообщение после отправки? Запрос MySQL выполняется 4 раза внутри цикла Как программно создавать новые должности пользовательского типа сообщений над API-интерфейсом XML-RPC?

SQL-запрос, эквивалентный запросу пользователя WP

У меня есть следующий код запроса пользователя WP:

//Get all users sorted by whatever $sorted_users = new WP_User_Query(array( 'orderby' => 'meta_value', 'meta_key' => 'satisfaction_rating', 'order' => $order, 'role' => 'subscriber', 'meta_query' => array( array( 'key' => 'satisfaction_rating', 'type' => 'NUMERIC' ) ) )); //Set up our search fields $search = new WP_User_Query(array( 'orderby' => $order_by, 'order' => $order, 'role' => 'subscriber', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'description', 'value' => $search, 'compare' => 'LIKE' ), array( 'key' => 'full_name', 'value' => $search, 'compare' => 'LIKE' ) ) )); //Get users filtered $filtered_users = new WP_User_Query(array( 'role' => 'subscriber', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'hourly_rate', 'value' => array($filter_values['min_hourly_rate'], $filter_values['max_hourly_rate']), 'compare' => 'BETWEEN', 'type' => 'UNSIGNED' ), array( 'key' => 'satisfaction_rating', 'value' => array($filter_values['min_satisfaction_rating'], $filter_values['max_satisfaction_rating']), 'compare' => 'BETWEEN', 'type' => 'UNSIGNED' ), array( 'key' => 'country', 'value' => $filter_values['country'], 'compare' => ($filter_values['country'] == '' ? 'LIKE' : '=') ) ) )); 

Затем я использую цикл foreach для итерации по отсортированному массиву пользователей и отбрасываю любые значения, отсутствующие в одном из других запросов. Однако при масштабировании время выполнения на этом очень велико из-за количества запросов. Я знаю, что прямой оператор SQL будет быстрее, но мой SQL-fu не очень силен. Я считаю, что мне нужно использовать соединения для получения желаемого эффекта, так как мне нужно получить информацию как из мета, так и из таблицы пользователей, но я не знаю, как я начну структурировать оператор. Может ли кто-нибудь дать мне толчок в правильном направлении?

Редактировать:

То же самое теперь, что и вложенный запрос:

 $users = new WP_User_Query(array( 'orderby' => $order_by, 'order' => $order, 'role' => 'subscriber', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'hourly_rate', 'value' => array($filter_values['min_hourly_rate'], $filter_values['max_hourly_rate']), 'compare' => 'BETWEEN', 'type' => 'UNSIGNED' ), array( 'key' => 'satisfaction_rating', 'value' => array($filter_values['min_satisfaction_rating'], $filter_values['max_satisfaction_rating']), 'compare' => 'BETWEEN', 'type' => 'UNSIGNED' ), array( 'key' => 'country', 'value' => $filter_values['country'], 'compare' => ($filter_values['country'] == '' ? 'LIKE' : '=') ), array( 'relation' => 'OR', array( 'key' => 'description', 'value' => $search, 'compare' => 'LIKE' ), array( 'key' => 'full_name', 'value' => $search, 'compare' => 'LIKE' ) ) ) )); 

У меня на сайте большое количество пользователей (1500+), и этот запрос занимает немного времени (5+ секунд). Как я могу сократить время выполнения?

Solutions Collecting From Web of "SQL-запрос, эквивалентный запросу пользователя WP"