树结构 数据库查询优化

th小米粥 发布于 2013/08/05 17:24
阅读 312
收藏 0

数据库mssql08


create table xxx(
id varchar(100) primary key,
name varchar(100),--名称
pid varchar(100),--父节点关联id
lvtag varchar(100)--当前所属层级
);

insert into xxx values('1','父节点','0','1');
insert into xxx values('aaa','子节点一','1','2');
insert into xxx values('bbb','子节点二','1','2');
insert into xxx values('c1','吃','a','3');
insert into xxx values('c2','喝','a','3');
insert into xxx values('c3','睡','a','3');
insert into xxx values('c4','code','a','3');


select * from xxx
--方法一
select * from (select id from xxx where id='1') a left join xxx b on a.id=b.pid
--方法二
select * from xxx where pid in(select id from xxx where id='1')
--上面那一种速度快一些?
--疑问,如果得知某id 需要查询其下三层的数据。应该选择那一种。大家有没更优的方案查询数据?



id	name	pid	lvtag
1	父节点	0	1
aaa	子节点一	1	2
bbb	子节点二	1	2
c1	吃	aaa	3
c2	喝	aaa	3
c3	睡	aaa	3
c4	code	aaa	3


想了好久。暂时没想出查询下三层的更好,同时速度更快的方案了。。

加载中
返回顶部
顶部