HomoUbuntos
клуб заведен 06-12-2011
постоянные читатели [1]
Снорк
участники [1]
Снорк
закладки:
цитатник:
клуб:
23-12-2011 13:43 HomoUbuntus
Daria Grishchenko: профчятов знаешь ли
блиц-опрос. что медленнее: два простых запроса в бд, или один с джойном?
Anton Newman: join
быстрее
книжка мне так сказаль
ForJest: не всегда
в целом зачастую 2 простых запроса лучше
сильно зависит от самого запроса и индексов
http://phpclub.ru/detail/article/mysql_optimize
вот нубская статья, почитайте
я в большинстве случаев делаю так:
допустим мне нужно вывести список заказов
у заказа может быть город, страна и т.п. в связаных таблицах
но мне нужно вывести всего 25 заказов на странице по порядку
поэтому джоин в этом случае не имеет смысла
лучше сделать с подзапросом
либо получить просто id заказов и новым запросом уже связать всю остальную инфу, т.е. решение

SELECT * FROM order AS o
INNER JOIN gid_city AS c ON c.id = o.id_city
INNER JOIN gid_country AS cn ON cn.id = o.id_country
INNER JOIN customer AS cm ON cm.id = o.id_customer
LIMIT 50, 25


сначала сформирует избыточный рекордсет
а потом наложит на него уже LIMIT
плюс это потянет за собою джоины и анализ индексов для всех 4-х таблиц гораздо лучше сделать

SELECT id FROM order AS o
LIMIT 50, 25


этот запрос будет очен быстрым, т.к. юзается только примари индекс
и потом

SELECT * FROM order AS o
INNER JOIN gid_city AS c ON c.id = o.id_city
INNER JOIN gid_country AS cn ON cn.id = o.id_country
INNER JOIN customer AS cm ON cm.id = o.id_customer
WHERE o.id IN (1,2,3,4,5,6)


либо равносильное решение

SELECT * FROM order AS o
INNER JOIN gid_city AS c ON c.id = o.id_city
INNER JOIN gid_country AS cn ON cn.id = o.id_country
INNER JOIN customer AS cm ON cm.id = o.id_customer
WHERE o.id IN (SELECT id FROM order LIMIT 50, 25)


такое будет работать быстрее

Состояние какое-то

Ваш комментарий:
Камрад:
Гость []
Комментарий:
[смайлики сайта]
Дополнительно:
Автоматическое распознавание URL
Не преобразовывать смайлики
Cкрыть комментарий (виден автору записи)
Закрыть