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

Добрый день. Нужно вытащить большой список городов, разделенных по разным по регионам. Какой алгоритм действий более правильный?
1. Определяем кол-во регионов в БД. Далее в цикле запрашиваем список городов для каждого региона. Тем самым создаем огромное кол-во "маленьких" запросов.
2. Вытаскиваем все города в один большой массив и дальше работаем с ним.
3. Возможно существует "хитрый" запрос к БД, который решает эту задачу?
Заранее спасибо!
  • Вопрос задан
  • 197 просмотров
Решения вопроса 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');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект
02 мая 2024, в 23:29
1500 руб./в час