实际应用过程中,发现游标第二次执行FETCH NEXT FROM cur INTO 时间相当慢,不知道其原理会不会是重新执行了一次原来的SELECT语句再把游标指到下一行,为了解决这一问题,想到把SELECT的结果先存放到临时表,再用游标去检索,性能会改善很多。
create table #Tmp --创建临时表#Tmp
(
(
……
);
INSERT INTO #Tmp
SELECT ……;--把原来的游标要查的数据放这里
DECLARE s_cursor CURSOR FOR
select …… from #Tmp;
select …… from #Tmp;
drop table #Tmp;