@demiash

Как отимизировать запрос с 2-мя JOIN и нулевыми значениями по втором JOIN?

например
табилца requests:
- id
- user_id

таблица requests_cities:
- id
- request_id
- city_id

таблца cities:
- id
- title

допустим в таблице requests 100 000 записей, а в табилце requests_cities есть только 5000 записей связанных с requests

пример запроса:
SELECT 
 requests.id
 requests.user_id
 cities.title
LEFT JOIN requests_cities ON requests_cities.request_id = requests.id
LEFT JOIN cities ON cities.id = requests_cities.city_id


при этом запрос начинает сильно тормозить
если джоины оставить, но в select убрать cities.title то отрабатывает быстро
в таблицах проставлены связанные ключи по полям джоина, с индексами проблем нет
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
acces969
@acces969
Программист
Первый вариант. Нужно соединить предварительно таблицы requests_cities и cities, поместить результат во временную таблицу.
Второй вариант - использовать внутреннее соединение вместо левого.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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