Dans mon application ruby-on-rails, j'ai des commentaires imbriqués qui peuvent être imbriqués à une longueur arbitraire.
J'ai essayé différentes façons de stocker cela :
Utiliser des auto-jointures :
belongs_to :parent, :class_name => 'Comment', :foreign_key => 'parent_id'
has_many :children, :class_name => 'Comment', :foreign_key => "parent_id"
Utiliser la gem ancestry
etc
Cependant, le problème est que peu importe ce que j'utilise, il y aura toujours un nombre linéaire de déclarations SQL. (1 déclaration pour récupérer tous les commentaires racine, puis 1 déclaration pour chaque enfant de la racine, puis 1 déclaration pour tous les enfants de cela, etc)
Y a-t-il un moyen plus efficace d'accomplir cela ?
Postgres 9.1, mais les solutions compatibles avec les versions antérieures sont préférées.