ФорумРазработкаБазы данных → Производительность JOIN (1 JOIN или 2 запроса)

Производительность JOIN (1 JOIN или 2 запроса)

  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 24 сентября 2011 г. 7:58

    Привет.
    Вот задумался как реализовать выборку.

    Допустим есть 100 000 записей.
    Мне при 1 запросе нужно вытащить из таблицы($array50)  50 записей и при этом JOIN ом подтянуть для каждой строки еще данные из другой таблицы($array).

    Лучше это сделать через JOIN или двумя запросами? Допустим так:

    1 запрос получает все данные;
    2 запрос получает данные из второq таблицы и формирует их в такой массив:

    /**
    * $row строка таблицы БД
    */

    $array[$row["id"]]=$row; // надеюсь понятно


    Потом при выводе информации будем пробегаться по 50 записям
    foreach($array50 as $var):
    echo $array[$var["user_id"]];
    endforeach;


    По моему так гораздо меньше нагрузки на сервер.
    Особенно если нужно достать не 50 а 1000 записей.

    Что скажете? есть разумное зерно в моих размышлениях?
    И как лучше делать?
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 24 сентября 2011 г. 8:03, спустя 4 минуты 43 секунды

    вообще похуй
    Сапожник без сапог
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 24 сентября 2011 г. 8:03, спустя 25 секунд


    Что скажете? есть разумное зерно в моих размышлениях?
    И как лучше делать?
    Написать JOIN и проверть с помощью EXPLAIN работают ли индексы, а не плодить говнокод
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 24 сентября 2011 г. 8:05, спустя 1 минуту 37 секунд

    Ну при первом варианте получается так
    ….
    строка JOIN строка
    строка JOIN строка
    строка JOIN строка
    строка JOIN строка
    строка JOIN строка
    строка JOIN строка
    строка JOIN строка
    строка JOIN строка
    ….

    Сколько запросов плодим

    А при втором варианте только 2 запроса
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 24 сентября 2011 г. 8:09, спустя 4 минуты 4 секунды

    Я уже сто раз говрил, зачем все эти теоритические рассуждения, когда есть EXPLAIN который явно показывает сколько строк в таблице базе надо перебрать, чтобы выполнить запрос.
    Спустя 55 сек.
    Напиши оба варианта, сравни эксплейны все запросов, просуммируй (перемнож) ровсы и получи ответ на твой вопрос
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 24 сентября 2011 г. 8:16, спустя 6 минут 53 секунды

    Ок. Все понял. Спасибо. =)
  • vitaliy_pashkov

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz 18 октября 2011 г. 15:49, спустя 24 дня 7 часов 33 минуты

    Professor, дак какой результат-то получился? что быстрее?
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 18 октября 2011 г. 16:21, спустя 31 минуту 20 секунд


    Professor, дак какой результат-то получился? что быстрее?

    быстрее кеширование :-)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!