20.02.2014, 12:50
Здравствуйте, друзья. Очередной вопрос, связанный с запросами и всеми любимой базой хранения данных MySQL. Задачу я попробую объяснить при помощи графика (в самом низу).
Цель задачи: Извлечь все строки таблицы "людей", попутно извлекая к каждому индивиду (по ключу) его одежду, строк которой может быть до 10.
На рисунке ниже мы видим 2 больших круга. Красный - таблица с одеждой, зеленый - с людьми.
Из каждой строчки таблицы "людей" должен каким-либо способом отходить "подзапрос", дабы извлечь его одежду. Таким образом, грубо говоря, можно лицезреть двумерный запрос.
Я нашёл 2 способа решения задачи, верней полтора. Вообще способов уйма, главное найти оптимальнейший, засим и спрашиваю Вас, уважаемые любители посидеть за языком Pawn.
Итак первый способ: Сначала извлекаем все строки из таблицы "людей", идем обрабатывать кэш.. При обработке, запускаем цикл (итерация = строка таблицы "людей"). И тут то и наступает момент истины, в каждой итерации мы делаем еще один "мини запрос" на извлечение уже одежды к этой строке "людей", и тут опять загвоздка, сможет ли сдружиться сервер с такой задачей? Как к этому отнесется однопоточность? Очистится ли предыдущий кэш, для обработки "мини запроса"?
Теперь второй способ. Он заключается в том, чтобы совершенно отдельно, в другой функции извлекать потом эту "одежду".
Возможно Вы сможете предложить проводить двумерность прямо в запросе? Вообщем, жду отзывов и советов.
Цель задачи: Извлечь все строки таблицы "людей", попутно извлекая к каждому индивиду (по ключу) его одежду, строк которой может быть до 10.
На рисунке ниже мы видим 2 больших круга. Красный - таблица с одеждой, зеленый - с людьми.
Из каждой строчки таблицы "людей" должен каким-либо способом отходить "подзапрос", дабы извлечь его одежду. Таким образом, грубо говоря, можно лицезреть двумерный запрос.
Я нашёл 2 способа решения задачи, верней полтора. Вообще способов уйма, главное найти оптимальнейший, засим и спрашиваю Вас, уважаемые любители посидеть за языком Pawn.
Итак первый способ: Сначала извлекаем все строки из таблицы "людей", идем обрабатывать кэш.. При обработке, запускаем цикл (итерация = строка таблицы "людей"). И тут то и наступает момент истины, в каждой итерации мы делаем еще один "мини запрос" на извлечение уже одежды к этой строке "людей", и тут опять загвоздка, сможет ли сдружиться сервер с такой задачей? Как к этому отнесется однопоточность? Очистится ли предыдущий кэш, для обработки "мини запроса"?
Теперь второй способ. Он заключается в том, чтобы совершенно отдельно, в другой функции извлекать потом эту "одежду".
Возможно Вы сможете предложить проводить двумерность прямо в запросе? Вообщем, жду отзывов и советов.