填充树形数据时哪种方法更好啊?
见到过如下方法: 
 用select   *   取出所有数据   (数据库,表为自联接的表,每行数据有id   和parentid) 
 再用DataView过滤出符合的记录,用递归的方法填到TreeView等控件中   
 不过我觉得这种方法在数据量很大时是不是效率很差?   
 自己在思索更一种做法,先用递归的方法取出一个节点下所有 "正确 "的记录   ,再做一个递归填充到控件,当然,这样可能效率更差,只是,既然做了,就想知道个究竟   ,更想明白,通用的、较好的方法到底是怎么样的,求教高手(我是初学   ,想知道的更详细些,谢谢)
------解决方案-------------------- <style>  
 body,td,th 
 { 
 	font-size:12px; 
 	vertical-align:top; 
 } 
 th 
 { 
 	layout-flow:vertical-ideographic ;  
 } 
  </style>    
  <TABLE  border=1>  
  <TR>  
 	 <TD colspan=3 align=center> 两种树型结构SQL的对比.htm </TD>   	  
  </TR>  
  <TR>  
 	 <TH> 名称 </TH>  
 	 <TD> 方法1:父子结构Tree1表 </TD>  
 	 <TD> 方法2:编码结构Tree2表 </TD>  
  </TR>  
  <TR>  
 	 <TH> 数据形式 </TH>  
 	 <TD>  
  <xmp>  
 id	pId		content  
 -------------------------------------- 
 1	0		节点 
 2	0		节点 
 ... 
 11	1		节点 
 ... 
 21	2		节点 
 ... 
 121	12		节点 
 ... 
 1110	110		节点 
  </xmp>  
  </TD>  
 	 <TD>  
 	 <xmp>  
 id	nodeCode		content 
 -------------------------------------- 
 1	001		节点 
 2	002		节点 
 ... 
 11	001001		节点 
 ... 
 112	001001002		节点 
 ... 
 1104	010010004		节点 
 ... 
  </xmp>  
  </TD>  
  </TR>    
  <TR>  
 	 <TH> 建表语句 </TH>  
 	 <TD>  
  <xmp>  
 CREATE TABLE [dbo].[Tree1] ( 
 	[id] [int] IDENTITY (1, 1) NOT NULL , 
 	[pId] [int] NULL , 
 	[content] [varchar] (10)  NULL  
 ) ON [PRIMARY] 
  </xmp>  
  </TD>  
 	 <TD>  
 	 <xmp>  
 CREATE TABLE [dbo].[Tree2] ( 
 	[id] [int] IDENTITY (1, 1) NOT NULL , 
 	[nodeCode] [varchar] (120)  NOT NULL , 
 	[content] [varchar] (10) NULL  
 ) ON [PRIMARY] 
  </xmp>  
  </TD>  
  </TR>      
  <TR>  
  <TH> 插入数据10+100+1000条,深度3,广度10 </TH>  
 	 <TD>  
 	 <xmp> --truncate table Tree1  
 declare @E int--广度循环变量 
 declare @EE int--广度循环变量  
 declare @EEE int--广度循环变量 
 declare @pId int--父id 
 declare @content varchar(10)   
 set @content= '节点 ' 
 --添加第1层10个节点 
 set @E=1 
 while  @E <=10 
 begin 
 	set @pId=0		 
 	insert tree1(pId,content) values(@pId,@content)	 
 	set @E=@E+1 
 end 
 --添加第2层100个节点 
 set @E=1 
 while  @E <=10	 
 begin 
 	set @EE=1 
 	while  @EE <=10 
 	begin 
 		set @pId=@E		 
 		insert tree1(pId,content) values(@pId,@content) 
 		set @EE=@EE+1 
 	end	 
 	set @E=@E+1 
 end 
 --添加第3层1000个节点 
 set @E=1 
 while  @E <=10	 
 begin 
 	set @EE=1 
 	while  @EE <=10 
 	begin 
 		set @EEE=1 
 		while  @EEE <=10 
 		begin 
 			set @pId=@E*10	+ @EE	 
 			insert tree1(pId,content) values(@pId,@content) 
 		set @EEE=@EEE+1 
 		end 
 		set @EE=@EE+1 
 	end 
 	set @E=@E+1 
 end 
 --select count(*) from tree1 </xmp> 	  	 
 	 </TD>  
 	 <TD>  
 		 <xmp> --truncate table Tree2 
 declare @nodeCode varchar(30) 
 declare @content varchar(10) 
 declare @E int--广度循环变量 
 declare @EE int--广度循环变量  
 declare @EEE int--广度循环变量 
 set @content= '节点 '   
 --添加第1层10个节点 
 set @E=1 
 while @E <= 10  
 begin 	 			 
  	set @nodeCode =right(rtrim(str(1000 + @E)