none
游标查询数据量大的话,会很慢吗?有什么好的办法代替呢? RRS feed

  • 问题

  • 假如我有一个查询

    ECLARE cussor1 CURSOR FOR 
    select news_id from 新闻表 into @newsid

    OPEN cussor1  
    FETCH NEXT FROM cussor1 INTO @newsid

    WHILE @@FETCH_STATUS = 0
    BEGIN
      ECLARE cussor2 CURSOR FOR 
      select shuxing_1 from 属性表 into @shunxing 
      OPEN cussor2 
      FETCH NEXT FROM cussor2 INTO @shunxing
      WHILE @@FETCH_STATUS = 0
      begin
      select * from 表值函数1(@newsid,@shunxing)
      FETCH NEXT FROM cussor2 INTO @shunxing

      end
      CLOSE cussor2  
      DEALLOCATE cussor2
      ECLARE cussor3 CURSOR FOR 
      select shuxing_2 from 另一个属性表 into @shunxing2 
      OPEN cussor3 
      FETCH NEXT FROM cussor3 INTO @shunxing
      WHILE @@FETCH_STATUS = 0
      begin
      select * from 表值函数2(@newsid,@shunxing2)
      FETCH NEXT FROM cussor2 INTO @shunxing2
      end
      CLOSE cussor3  
      DEALLOCATE cussor3
     
    END
     CLOSE cussor1  
     DEALLOCATE cussor1

    这样一个查询,我要得到 两个表值函数的联合结构,这样写,数据量很大的时候,是不是很慢?有什么别的方法吗?
    仰天大笑出门去,我辈岂是蓬蒿人
    2010年6月3日 11:10

答案

全部回复