Деревья

mihail.zagoskin

Новичок
Доброго времени суток, у меня уже была тема про деревья, в принципе костылями все как-то решается, но хотелось бы услышать мнения про разные метода, в частности nested sets при работе с большими данными, но даже не совсем большими, а относительно. Допустим одновременно выборка 1000 записей и вставка 1000+- записей, как это долго будет обрабатываться, плюсы, минусы и тд.
 
тысячи и десятки тысяч записей для ДБ - это ничто, если вы нигде не накосячите.
 
Не занимайтесь преждевременной оптимизацией, иначе у вас никогда не будет этих 1000+ запросов на вставку
 
Не занимайтесь преждевременной оптимизацией, иначе у вас никогда не будет этих 1000+ запросов на вставку
Почему преждевременной, я уже тут тему поднимал подобную, так что сейчас уже в пределах данной погрешности. И да, это не постоянно, это просто бывает наплывами, что жутко тормозит все, обычно меньше. Поэтому я сразу на будущее...
 
Сложно судить, когда скрипта нет, и никаких логов.
Ну даже 1000 в секунду это будет не проблема, вы даже не заметите.
Так как это делает не 1 человек, а 1000.
Тут то с мильёнами проблем нет, а у вас 1000. =)
Вы видимо путаете выборку, вывод и пользовательский HTTP запрос.
Но судя по тому, что вы делаете, вы просто хреначите 1000 раз SQL запрос и еще раз сверяете это 1000 раз.
Хотя требовалось это проверить 1 запросом и сделать вывод соответствующему пользователю 1 раз.
 
Но судя по тому, что вы делаете, вы просто хреначите 1000 раз SQL запрос и еще раз сверяете это 1000 раз.
а ты как делаешь, все дерево на клиенте считаешь и обновляешь?
Ну даже 1000 в секунду это будет не проблема, вы даже не заметите.
будет, на каждый insert всегда идет select и множественный update

 
есть еще Materialized Path. Если таблица не на сотни тысяч записей, то как вариант вполне быстра для вставки. Отдельным ее плюсом будет то, что она не крашится при косяках.

Есть closure path - достаточно эффективный для вставки и на первый взгляд не громоздкий, но не пробовал, не знаю.

а ты как делаешь, все дерево на клиенте считаешь и обновляешь?
Если нужно вставить большое поддерево, без особого извращения, то можно вставить поддерево в корневой элемент (это довольно быстро, так как в конец вставляется), потом переместить все это поддерево в нужное место, это тоже быстрее, чем по листочку вставлять. А так - да, nеsted sets он для выборки, а не для вставки.
 
Сверху