日期:2014-05-16 浏览次数:20500 次
一般在处理循环问题的时候,大家都会选择Cursor,因为使用起来非常方便,代码也很好实现,但是使用Cursor肯能会产生性能问题。那么有什么好的替代方法吗?从网上看到的一篇文章很有借鉴意义(ReplacingCursors and While Loops),改写Cursor性能提高了几倍.
所以我们在设计代码的时候可以多考虑考虑是否不用Cursor也可以实现。 源代码和改写后的代码如下:
--源代码先查询r查询@tmp_id然后跟据@tmp_id获得tmp_values然后更新表OutPut_tbl的值
DECLARE temp_cursor CURSOR FOR
SELECT column_data
FROM DB.dbo.many_tbl
WHERE id = @tmp_id -- key data
ORDER BY column_data
OPEN temp_cursor
FETCH NEXT FROM temp_cursor
INTO @tmp_data
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @tmp_values = @tmp_values + convert(varchar(20), @tmp_data) + ','
FETCH NEXT FROM temp_cursor
INTO @tmp_data
END
CLOSE temp_cursor
DEALLOCATE temp_cursor