|
|
|
| данный пример очень упрощенный, просто чтобы описать суть проблемы и вариант решения
есть такой запрос
SELECT u.id,c.name
FROM users u, cities c
WHERE u.city=cities.id
ORDER BY u.id
LIMIT 0,30
в таблицах users и cities более десятка тысяч записей
правильно ли сделать сначала один запрос
SELECT u.id,u.city
FROM users u
ORDER BY u.id
LIMIT 0,30
потом собрать все ИД городов (не больше 30)
и сделать еще один запрос
SELECT c.name
FROM cities c
WHERE c.id IN (ИД городов через запятую)
чтобы уменьшить нагрузку на БД?
что лучше
1. делать один запрос на несколько таблиц в которых может быть очень много записей
или
2. делать по одному запросу к каждой отдельно таблице, предварительно собирая ключи на только нужные значения | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(25.12.2014 в 18:19)
| | правильно вот так
SELECT u.id,c.name
FROM users u LEFT JOIN cities c
ON u.city=cities.id
ORDER BY u.id
LIMIT 0,30
|
| |
|
|
|