За последние 24 часа нас посетили 22613 программистов и 1017 роботов. Сейчас ищут 743 программиста ...

Выборка через PHP или средства БД?

Тема в разделе "Вопросы от блондинок", создана пользователем x_dev_x, 21 ноя 2022.

Метки:
  1. x_dev_x

    x_dev_x Новичок

    С нами с:
    28 окт 2022
    Сообщения:
    6
    Симпатии:
    0
    Есть БД (интересно ваше мнение и опыт с разными БД) и из неё вытягиваем некоторые данные.

    Вопрос: что лучше==быстрее 1) быстро вытянуть кучу из БД и обработать на искомое через php или 2) написать сложный запрос, который средствами БД выдаст готовый результат?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    В "PHP для профи" должны быть вопросы, интересные для профи. Т.е. сложностью выше среднего. Этот вопрос просто тупой, извини меня. Ответ очевиден: СУБД предназначен для обработки множеств. PHP можно доверить форматирование, приведение к нужной форме.
    Переношу в "блондинок".
    --- Добавлено ---
    SQL очень красивый и мощный язык. Он декларативный, т.е. описывает не как сделать (циклы хуиклы условные переходы - нет такого) а что надо сделать.
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Всё зависит от задач.. В большинстве случаев лучше всего делать в БД, но бывает что это или невозможно или очень накладно.
    Пример - построение дерева, иерархии неограниченой вложенности. Средствами БД зачастую не сделать...
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Всё можно сделать, если думать о множествах, а не о циклах. Есть эффективные способы представления.

    Но надо не об абстрактных сферических конях рассуждать, а о конкретных задачах с их специфическими требованиями.
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Если не сложно - поделись знанием? Давно ищу способ получения например пути от корня дерева до элемента, или получить всё идёт всех вложенных потомков вм конкретной категории?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    @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
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    "вытянуть всю кучу в PHP" я тоже применяю когда очевидно что страница должна содержать выпадающий список со ВСЕМИ категориями и этот список никогда не будет слишком большой. в таком случае всё что нужно это отформатировать список так, чтобы отступы соответствовали вложенности - форматирую на стороне PHP.

    интересно начинается тогда, когда становится очевидным что ВЕСЬ список может стать слишком большим и нам надо добывать только какое-то под-множество. вот тут на помощь приходят специальные техники вроде NS или MP.
     
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    благодарствую...
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Если элемент дан, даже в AL (списке смежности) можно использовать один запрос, поднимаясь от элемента к корню (при наличии вменяемого ограничения на максимальную вложенность).