Есть БД (интересно ваше мнение и опыт с разными БД) и из неё вытягиваем некоторые данные. Вопрос: что лучше==быстрее 1) быстро вытянуть кучу из БД и обработать на искомое через php или 2) написать сложный запрос, который средствами БД выдаст готовый результат?
В "PHP для профи" должны быть вопросы, интересные для профи. Т.е. сложностью выше среднего. Этот вопрос просто тупой, извини меня. Ответ очевиден: СУБД предназначен для обработки множеств. PHP можно доверить форматирование, приведение к нужной форме. Переношу в "блондинок". --- Добавлено --- SQL очень красивый и мощный язык. Он декларативный, т.е. описывает не как сделать (циклы хуиклы условные переходы - нет такого) а что надо сделать.
Всё зависит от задач.. В большинстве случаев лучше всего делать в БД, но бывает что это или невозможно или очень накладно. Пример - построение дерева, иерархии неограниченой вложенности. Средствами БД зачастую не сделать...
Всё можно сделать, если думать о множествах, а не о циклах. Есть эффективные способы представления. Но надо не об абстрактных сферических конях рассуждать, а о конкретных задачах с их специфическими требованиями.
Если не сложно - поделись знанием? Давно ищу способ получения например пути от корня дерева до элемента, или получить всё идёт всех вложенных потомков вм конкретной категории?
@ADSoft > способ получения например пути от корня дерева до элемента - в технике Nested Sets путь от корня это все элементы, "содержащие" наш элемент, т.е. ":id BETWEEN lft AND rgt". и все вложенные в данный узел тоже находятся через BETWEEN - в технике Materialized Paths путь от корня это буквально идентификатор узла - строка, содержащая ИД всех предков. а все вложенные находятся через LIKE 'a.b.c.d.%' http://www.rampant-books.com/art_vadim_nested_sets_sql_trees.htm
"вытянуть всю кучу в PHP" я тоже применяю когда очевидно что страница должна содержать выпадающий список со ВСЕМИ категориями и этот список никогда не будет слишком большой. в таком случае всё что нужно это отформатировать список так, чтобы отступы соответствовали вложенности - форматирую на стороне PHP. интересно начинается тогда, когда становится очевидным что ВЕСЬ список может стать слишком большим и нам надо добывать только какое-то под-множество. вот тут на помощь приходят специальные техники вроде NS или MP.
Если элемент дан, даже в AL (списке смежности) можно использовать один запрос, поднимаясь от элемента к корню (при наличии вменяемого ограничения на максимальную вложенность).