posts - 165, comments - 198, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

mysql 树形结构数据收集(存储过程)

Posted on 2008-06-08 16:33 G_G 阅读(2771) 评论(2)  编辑  收藏 所属分类: Database
就用数据数据库表地址数据(中国地区)来说吧
存储过程:
DELIMITER //
drop procedure if exists  useCursor //
create temporary table if not exists  aop.tmp_table(data bigint(20))//

//建立存储过程
CREATE PROCEDURE useCursor(iid bigint(20))
    
BEGIN
         //局部变量定义
         declare tid bigint(20default -1 ;
        
         //游标定义
         
declare cur1 CURSOR FOR select id from aop.location where fid=iid ;
        
//游标介绍定义
         declare
 CONTINUE HANDLER FOR SQLSTATE '02000' SET tid = null;
        
         //开游标
         OPEN cur1;
      
  FETCH cur1 INTO tid;

        
WHILE ( tid is not null ) 
         DO
          
insert into aop.tmp_table values(tid);
          //树形结构数据递归收集到建立的临时表中
          call useCursor(tid);
         
FETCH cur1 INTO tid ;
       
END WHILE;
    
END;//
DELIMITER ;

//查询开始 ,运行是成功的,但用时有10多秒之多,才几百条数据;
//望那个大牛 帮帮解决下时间问题!

call useCursor(
1);
select * from tmp_table ;
drop temporary table if  exists  aop.tmp_table ;


结果:

|  187 |
|  188 |
|  189 |
|  190 |
|  191 |
|  192 |
|  193 |
|  194 |
|  195 |
|  196 |
|  197 |
|  198 |
|  199 |
|  200 |
|  201 |
|  202 |
|  203 |
|  204 |
|  205 |
|  206 |
|  207 |
|  208 |
|  209 |
.


评论

# re: mysql 树形结构数据收集(存储过程)  回复  更多评论   

2008-06-09 04:44 by 如果黑客
好深奥啊

# re: mysql 树形结构数据收集(存储过程)  回复  更多评论   

2008-06-10 09:19 by 路过(gangqiang.liu@live.cn)
10s 还不如一条sql把整张表的数据select出来在内存中递归。但尽量在设计上避免这样,只取自己想要的。

只有注册用户登录后才能发表评论。


网站导航: