首页 新闻 会员 周边 捐助

CTE with as 递归查询的优化问题

0
悬赏园豆:5 [已解决问题] 解决于 2009-04-28 18:35

用地址表举例 E_address  查询指定@ID 对应的所有子级 地址信息

ID ParentID AddressName

1     0            中国

2     1            北京

3     1            上海

4     1            江苏

5     4            南京

.......

大概3000多条数据

如果是查询 @ID=2 速度很快

如果@ID=1 那么要很长时间

有什么办法可以优化下啊

declare @level int

Set @level=0

 WITH temp
 as
 (
  SELECT *,@level as Level FROM E_address WHERE ID=@ID
  UNION ALL SELECT e.*,level+1  FROM E_address e INNER JOIN temp t ON 

t.ID=e.ParentID
 )

 

select * from temp

hekai的主页 hekai | 初学一级 | 园豆:85
提问于:2009-04-26 13:17
< >
分享
最佳答案
0

可不可以改进下select语句?写成子句嵌套试试,我感觉是union all拖了速度。  

不要迷恋哥,哥只是个传说 | 菜鸟二级 |园豆:490 | 2009-04-27 15:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册