Structure de l'arbre de requête de données dans SQL Server

J'ai une table Person qui a 3 colonnes: Id, Name, ParentIdParentId est le Id de la ligne parent.

Actuellement, pour afficher la totalité de l'arbre, il faudrait parcourir tous les éléments d'enfant jusqu'à ce qu'il n'y a pas plus d'éléments enfants. Il ne semble pas trop efficace.

Est-il un meilleur et plus efficace d'interroger ces données?

Aussi, est-il une meilleure façon de représenter cet arbre comme la structure dans une base de données SQL Server? Une autre conception de ma table/base de données?

Voir stackoverflow.com/questions/935098/... pour la même question avec des réponses.
Voir le projet de Loi Karwin SQL Antipatterns grève série de diapositives - il décrit plusieurs antipatterns - parmi eux, les "naïfs arbre" que vous avez - et propose des solutions possibles. Il dispose également d'un grand livre du même nom de SQL Antipatterns - hautement recommandé!

OriginalL'auteur Ryan | 2012-04-29