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

就用数据 数据库表地址数据(中国地区)来说吧
存储过程:
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 ( 20 default   - 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   |
.

你可能感兴趣的:(mysql 树形结构数据收集(存储过程))