Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 25 Май, 2012, 04:20:29

Страниц: [1]
Печать
Автор Тема: Производительность JOIN (1 JOIN или 2 запроса)  (Прочитано 253 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Professor    ↓ 
24 Сентябрь, 2011, 03:58:19
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

Привет.
Вот задумался как реализовать выборку.
 
Допустим есть 100 000 записей.
Мне при 1 запросе нужно вытащить из таблицы($array50)  50 записей и при этом JOIN ом подтянуть для каждой строки еще данные из другой таблицы($array).
 
Лучше это сделать через JOIN или двумя запросами? Допустим так:
 
1 запрос получает все данные;
2 запрос получает данные из второq таблицы и формирует их в такой массив:
 
PHP
/**
 * $row строка таблицы БД
 */

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

По моему так гораздо меньше нагрузки на сервер.
Особенно если нужно достать не 50 а 1000 записей.
 
Что скажете? есть разумное зерно в моих размышлениях?
И как лучше делать?
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
phpdude    ↓ 
24 Сентябрь, 2011, 04:03:02 , спустя 4 минуты 43 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20790
Сила слова: 1.66

вообще похуй
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
AlexB    ↓ 
24 Сентябрь, 2011, 04:03:27 , спустя 25 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3427
Сила слова: 2.6


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

Professor    ↓ 
24 Сентябрь, 2011, 04:05:04 , спустя 1 минуту 37 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

Ну при первом варианте получается так
....
строка JOIN строка
строка JOIN строка
строка JOIN строка
строка JOIN строка
строка JOIN строка
строка JOIN строка
строка JOIN строка
строка JOIN строка
....
 
Сколько запросов плодим
 
А при втором варианте только 2 запроса
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
AlexB    ↓ 
24 Сентябрь, 2011, 04:09:08 , спустя 4 минуты 4 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3427
Сила слова: 2.6

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

Professor    ↓ 
24 Сентябрь, 2011, 04:16:01 , спустя 6 минут 53 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

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

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
vitaliy_pashkov    ↓ 
18 Октябрь, 2011, 11:49:56 , спустя 24 дня 7 часов 33 минуты 55 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 1
Сила слова: 0

Professor, дак какой результат-то получился? что быстрее?
Записан
phpdude    ↓ 
19 Октябрь, 2011, 12:21:16 , спустя 31 минуту 20 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20790
Сила слова: 1.66


Professor, дак какой результат-то получился? что быстрее?
 
быстрее кеширование :-)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Страниц: [1]
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd