sql2000,查找树形菜单,整个表的数据才3000行,写了个函数,用于查找根节点,效率啊,极其的低下,搞的很抑郁。表的主要结构,tb(menuid int ,menuname varchar(100),parentid int)
parentid=0表示为根节点
menuid 节点编号
menuname 名称功能,任意传入一个节点编号,都返回它的根。
比如节点:开发语言(menuid=12)--vb(menuid=45)--基础类(menuid=25)传入参数:45,返回12
传入参数:25,返回12
传入参数:12,返回12我写的函数如下:在节点编号与父节点编号彼此循环create   function get_parentid( @menuid int)
Returns varchar(300)
asbegin
declare @pid int,@mid int,@out_str varchar(100)select  @pid=parentid,@mid=menuid from tb where   menuid=@menuidif @pid<>0
begin 
while @menuid!=0
begin
select @mid=menuid ,@menuid=parentid from tb where   menuid=@menuid
endendreturn @mid
end==================调用,耗时2秒select menuid,menuname,parentid,dbo.get_parentid(menuid)
from tb where    dbo.get_parentid(menuid)=200