Рекурсия

fixxxer

К.О.
Партнер клуба
а доку по 5.7 посмотреть религия не позволяет?
А с индексом что делать?
Через generated column индекс на префикс (а не только на первый уровень) я чет не очень понимаю как сделать. Только если выражение с конкатенацией в строку, но это как-то "вышел-таки снова на Дерибасовскую" получается.
 

WMix

герр M:)ller
Партнер клуба
@mihail.zagoskin
не понял, что имеете ввиду.
x0.01 это даты

2 зашел раньше чем 3 (учетом входа всех родителей) а 4 раньше чем 5
кто будет имеет приоритет выше 4 или 5 если слева направо то 5
Код:
                  01.01
                   /\
                  /  \
                 /    \
                /      \
               /        \
              /          \
             /            \
            /              \
           /                \
        02.01              03.01
         /\                 /\
        /  \               /  \
       /    \             /    \
      /      \           /      \
     /        \         /        \
    /          \       /          \
  05.01       07.01  04.01       06.01
 

mihail.zagoskin

Новичок
@mihail.zagoskin

x0.01 это даты

2 зашел раньше чем 3 (учетом входа всех родителей) а 4 раньше чем 5
кто будет имеет приоритет выше 4 или 5 если слева направо то 5
Код:
                  01.01
                   /\
                  /  \
                 /    \
                /      \
               /        \
              /          \
             /            \
            /              \
           /                \
        02.01              03.01
         /\                 /\
        /  \               /  \
       /    \             /    \
      /      \           /      \
     /        \         /        \
    /          \       /          \
  05.01       07.01  04.01       06.01
От дат вообще ничего не зависит.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
А с индексом что делать?
Через generated column индекс на префикс (а не только на первый уровень) я чет не очень понимаю как сделать. Только если выражение с конкатенацией в строку, но это как-то "вышел-таки снова на Дерибасовскую" получается.
Число дочек индексируется без проблем, вопрос по индексу на вхождение заданного id в массив materialized path - тут да, MEMBER OF, индекс по массиву, это 8ка.
Я бы начал с порядка количества записей в таблице - это люди, их там не миллион будет, тут можно и с одним индексом решить, а если через год начнет подтормаживать - можно и обновить субд.
Впрочем, кому мы рассказываем, человек через пол-года уже в другом месте работать будет 😁

Говоря про сферический materialized path - можно fulltext, кстати ... не ну, блин, давайте еще MyISAM вспомним. Нужен индекс - ставь 8.
 
Последнее редактирование:

Yoskaldyr

"Спамер"
Партнер клуба
Я бы начал с порядка количества записей в таблице - это люди, их там не миллион будет, тут можно и с одним индексом решить, а если через год начнет подтормаживать - можно и обновить субд.
Поддерживаю! Не удивлюсь даже если там настолько мало записей, что даже тупая загрузка всех записей в память одним селектом и расчет всего на пхп не будет тормозить :)
 

mihail.zagoskin

Новичок
(конечно зависит, кто раньше тот левее)
нет, это если переливом, а если он встал сразу под конкретного человека в середине. Таким образом, кто раньше может быть и в середине и в конце. А переливом заполняются пустые места.
 

WMix

герр M:)ller
Партнер клуба
ты о чем, какой перелив? да и какое это значение имеет? тебе решать сейчас, куда подвесить клиента, правило "слева направо" кто слева? по какому принципу он слева, как ты определяешь что он слева?
 

mihail.zagoskin

Новичок
тебе решать сейчас, куда подвесить клиента, правило "слева направо" кто слева? по какому принципу он слева, как ты определяешь что он слева?
Попробую на этой схеме показать




Код:
                01.01
                   /\
                  /  \
                 /    \
                /      \
               /        \
              /          \
             /            \
            /              \
           /                \
        02.01              03.01
         /\                 /\
        /  \               /  \
       /    \             /    \
      /      \           /      \
     /        \         /        \
    /          \       /          \
  05.01       07.01  04.01       06.01
Слева направо, это если у 05.01 меньше двух, то подставляем ему двух человек. Так же в этом случае у 04.01 уже может быть два человека, и они могут прийти раньше, поэтому как даты тут помогут, я не знаю.

То-есть, если родитель 01.01, и у него уже есть два пользователя, то идет вниз и проверяем 02.01 03.01 на кол-во пользователей, и если у первого попавшего будет меньше двух, то заполняем, если у всех по два то идем снова вниз и так далее..
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
верхние уровни дерева скорее всего заполнены, и вакантные места есть только у нижних узлов, это значит, что в выборке ноды со свободным местом для дочек будет участвовать только часть данных,
вопрос - половина там, или 10%?
если половина - надо обновляться на 8ку и делать индекс, если искать надо среди 10к записей - можно забить
 
Сверху