[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: JOIN vs массивы с циклами
Страницы: 1, 2, 3
Zzepish
Вот тимлид заставаляет, если у нас всего 2-4 таблицы, делать через 2-4 запрос и разбирать на уровне php. Я хз - правильно ли это (не замерял). У кого есть какие мысли на эту тему?
T1grOK
Зависит от ситуации.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Zzepish
T1grOK
Всегда. Мотивирует это тем, что JOIN сильно замедляет работу запроса
Игорь_Vasinsky
купите ему оперативки.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Another Reality
Странно, я думаю что несколько запросов отработают медленнее чем один с JOIN.
twin
Цитата (Zzepish @ 2.09.2016 - 06:11)
Мотивирует это тем, что JOIN сильно замедляет работу запроса

Он не прав. Это паранойя. JOIN и действительно тормозит, но чтобы это почувствовать, нужны очень большие объемы данных.

Если таблицы измеряются гигабайтами, и посещаемость достаточно высокая, то тогда можно заморочиться. Мне приходилось эмулировать JOIN на PHP.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
Только что сделал тест

0.062 сек
SELECT * FROM table1 as  t1
LEFT JOIN table2 as n ON t2.`id` = t1.`id`
LIMIT 100


0.031 сек
SELECT * FROM table1 LIMIT 100

0.032 сек
SELECT * FROM table2 LIMIT 100

+ скорость цикла = 0.063+

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Another Reality
Arh
Вы не учитываете очередь. При высоких нагрузках именно это важно, а не суммарная скорость. Кроме того, при увеличении объема данных, время исполнения увеличивается не линейно.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
Второй раз потестил без лимитов, получилось еще интересней.
Таблицы по 100 и 30 мб

Запрос на ту что 100 мб показал 0,094 сек
Запрос на ту что 30 мб показал 0,063 сек

А JOIN на обе показал 0.093 =)


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Очередь хз, посещаемость под 2 ляма в день.
Правда кэш.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Arh
Условия добавь.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Another Reality
Надо хорошенько разобраться с внутренним устройством MySQL, для нормального понимания этого дела.
Посоветйте какую-то книгу хорошую.
Arh
Добавил WHERE t1.`id` > 1000 AND t1.`id` < 999999
Ничего толком не изменилось.
Точнее просто 1 SELECT отработал за (от 0,076 до 0.093), а с JOIN за 0.078.
Тут погрешность превышает разницу, ибо её почти нет.
А если сложить время двух запросов + скорость соединения с bd, что тоже часто довольно много времени требует, умножить эту скорость на 2, потому что 2 запроса + скорость цикла, а то и нескольких, будет в 5 раз медленней =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
inpost
Another Reality Arh
JOIN даст ниже результаты при более высокий объемах работы и дополнительных тяжелых условиях выборки. Такое поведение было в 5.5, может к 5.7 внесли кое-какие правки.

Zzepish
Если это простые сайты, то он "типичный программист" ph34r.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Zzepish
inpost
Не совсем простые. Агрегаторы магазинов, со всей магазинной системой, аукционами и прочей лабудой. И в подобном стиле
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.