Никогда так не делай!
Sanja (v.2) 16.06.2002 00:16
Я на это уже нарывался, спасибо Мише - наставил на путь истинный.
Выбрать N сообщений с левелом = 0 и рекурсивно обойти их деток - казалось бы, что проще! Ан нет!
Я протестировал первый вариант своего форума на 25 записях с нехитрой структурой и долго хлопал в ладоши от радости - надо же, как круто - всё заработало! Потом загнал в таблицу пятимегабайтный архив старого форума с 9000 записей, сервер вздохнул, parser3.exe выжрал под сорок мегов памяти, но дерево постороил (не всё, limit 0, 50 последних записей, есессно). Выгрузил своего уродца на сайт провайдера - перестало работать совсем - там ограничение на время выполнения и объём процессорных ресурсов. Тут я начал чесать репу и набрал в MySQL SHOW PROCESSLIST и ужаснулся.
Потом по Мишиному совету ввёл дополнительное поле - id треда для каждой реплики - и это облегчило рекурсию и сильно ускорило работу. Вот такие дела...
ЗЫ ты дескрайбом по своей конструкции select * from table where parent in($select) проходил? Открой мануал по команде DESCRIBE и послушай, что тебе MySQL выскажет по поводу твоего оператора и его прожорливости...
ЗЗЫ Могу прислать по почте движок, который я накарябал для
http://gfkforum.bougakov.com/forum/ - посмотришь, как у меня всё устроено.