Один или несколько запросов к БД?

Добрый день. Нужно вытащить большой список городов, разделенных по разным по регионам. Какой алгоритм действий более правильный?
1. Определяем кол-во регионов в БД. Далее в цикле запрашиваем список городов для каждого региона. Тем самым создаем огромное кол-во "маленьких" запросов.
2. Вытаскиваем все города в один большой массив и дальше работаем с ним.
3. Возможно существует "хитрый" запрос к БД, который решает эту задачу?
Заранее спасибо!
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
Делать в цикл запросы к базе - очень плохо, т.к. нагрузки повышаются из пустого места, лучше:
если необходимо выбрать только города (без регионов):
SELECT * FROM cities
если необходимо выбрать только города, относящиеся к определенным регионам:
SELECT *
FROM cities
WHERE region_id IN (1, 2, 3)

если необходимо выбрать информацию и по городам и по регионам:
SELECT cities.*, regions.* FROM cities
LEFT JOIN regions ON regions.id = cities.region_id


ну и не стоит забыть что информация о городах/регионах обновляется очень редко, поэтому стоит закешировать эту информацию
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@entermix
Запрашиваем нужные регионы, а далее IN Condition:
SELECT *
FROM cities
WHERE region_id IN ('1', '2', '3');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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