Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Насколько я понимаю, это означает "если я хоть-что то в этот тред написал", так ?
AVK>Или являешься его автором. Да.
Ну если автор, то уж точно написал
PD>>ИМХО было бы лучше, если бы это означало "это сообщение есть некий потомок любого уровня от моего сообщения". Понимаю, что реализовать это сложнее.
AVK>Это не просто сложнее, это, без сильного разрастания размера БД, просто невозможно. Для такого требуется хранить в проиндексированном виде табличку вида (thisid, parentid) для всех возможных комбинаций конкретного родителя и всех его потомков. По грубой оценке это примерно 300М записей. 8 байт запись + минимум один индекс по parentid * 50% fill factor получаем 9Гб табличку уже сейчас. А у нас вся БД — 30.
AVK>Второй вариант — хранить табличку вида (topicid, userid, lastreplyid) и обновлять ее рекурсиным способом при каждом ответе. Здесь размеры уже будут поскромнее — примерно 5М записей. при индексах по topicid и userid получаем 400М. Но резко замедлится добавление сообщения — придется при каждом посте грузить весь топик в память, либо мудрить что то с hierarchyid
А нельзя ли просто хранить у каждого сообщения его родителя ? Рекурсивный подъем пока parent!=null && parent.author != login ?