like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей

Почему запрос к MySQL с Front-End в разы медленнее прямого запроса?

Есть таблица на овер 500k записей.
Почему запрос сделанный в phpMyAdmin выполняется за доли секунды, а отправленный с фронтэнда средствами JQuery Autocomplete UI, возвращается через несколько секунд?

$title = '%' . $_GET['term'] . '%';
$cpt1 = 'type1';
$cpt2 = 'typ2';

   
$sql = $wpdb->prepare("
		(SELECT ID, post_title, post_type FROM wc_posts WHERE (post_title LIKE %s) AND (post_type = %s) LIMIT 5)
		UNION
		(SELECT ID, post_title, post_type FROM wc_posts WHERE (post_title LIKE %s) AND (post_type = %s) LIMIT 5)
		ORDER BY post_type DESC, post_title", $title, $cpt1, $title, $cpt2);
   
$data = $wpdb->get_results( $sql );
  • Вопрос задан
  • 784 просмотра
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1. Не очень понятно если честно что Вы подразумеваете под "возвращается через несколько секунд", в коде не понятно как Вы это меряли.
Мне кажется что вероятней всего дело не в SQL:
При "отправке с phpmyadmin", phpmyadmin выводит чистое время работы SQL запроса.
При "отправке с фронтенда" - Вы видите итоговое время всего HTTP запроса, включая: dns поиск, установление соединения до вашего хоста, запуск вашего php фреймворка и его работу, получение данных и их отдача. Промониторьте все эти значения.

На всякий случай если дело все таки в SQL:

2. У Вас могут быть включены всяко-разные кеши, соответственно при повторном вводе запроса через phpmyadmin он отдается быстрее. Можно попробовать отключить кеши и промониторить ситуацию заново.

3. Покажите explain запроса
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы