Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: оптимизация запросов
 
 автор: Дмитрий Смаль   (25.12.2014 в 18:19)   письмо автору
 
 

данный пример очень упрощенный, просто чтобы описать суть проблемы и вариант решения

есть такой запрос
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. делать по одному запросу к каждой отдельно таблице, предварительно собирая ключи на только нужные значения

  Ответить  
 
 автор: Valick   (25.12.2014 в 19:24)   письмо автору
 
   для: Дмитрий Смаль   (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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования