В моем приложении ruby-on-rails я вложил комментарии, которые могут быть произвольной длины.
Я пробовал разные способы хранения этого:
Использование самостоятельных объединений:
belongs_to :parent, :class_name => 'Comment', :foreign_key => 'parent_id'
has_many :children, :class_name => 'Comment', :foreign_key => "parent_id"
Использование драгоценного камня предков
и т.д.
Проблема, однако, в том, что независимо от того, что я использую, всегда будет линейное число операторов SQL. (1 оператор для получения всех корневых комментариев, затем 1 оператор для дочерних элементов каждого корня, а затем 1 оператор для всех дочерних элементов этого и т. Д.)
Есть ли более эффективный способ сделать это?
Postgres 9.1, но, надеюсь, предпочтительны решения, обратно совместимые.