替换Cursors和While Loops

2024-01-13 15:58
文章标签 替换 loops cursors

本文主要是介绍替换Cursors和While Loops,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一般在处理循环问题的时候,大家都会选择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

 

            UPDATE DB.dbo.OutPut_tbl

            SET column_out = @tmp_values

            WHERE id = @tmp_id

 

--替换代码(速度变快而且代码简洁)

 

CREATE function dbo.ufn_data_pivot(@id as int)

      Returns varchar(20)

      AS

      BEGIN

          DECLARE @value varchar(20)

          SET @value = ''

          SELECT  @value =  @value + convert(varchar(20), column_data) + ','

          FROM DB.dbo.many_tbl

          WHERE id = @id

          ORDER BY column_data

 

          Return @value

      END

 

UPDATE DB.dbo.OutPut_tbl

SET column_out= dbo.ufn_data_pivot(key_column)

 

 

 

 

这篇关于替换Cursors和While Loops的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/602002

相关文章

notepad++ 正则表达式多条件查找替换

基础语法参考: https://www.cnblogs.com/winstonet/p/10635043.html https://www.linuxidc.com/Linux/2019-05/158701.htm   通常情况下我们查找的内容和要被替换掉的内容是一样的,我们只需要使用正则表达式精确框定查找内容,替换直接输入要替换的内容即可。 但有时会比较复杂,查找的内容,只需要替换其中

shell脚本中变量中字符串替换的测试 /和//的区别

test_char=abbbcbbbf echo "bf:test_char = " $test_char test_char=${test_char/bbb/ddd} echo "af:test_char = " $test_char 输出: bf:test_char =  abbbcbbbf af:test_char =  adddcbbbf 只匹配第一个

springboot启动时替换配置参数

SpringBoot启动时配置参数替换 一.背景 SpringBoot项目启动的时候,在不使用配置中心等的前提下或者有公司强制使用指定的“密码箱”情况下,需要远程获取关键配置信息,比如数据库密码,则需要在项目启动前获取配置并且进行本地配置替换。 二.Demo实现 1.maven依赖 <dependencies><dependency><groupId>org.springframewor

Java中等题-整数替换(力扣)

给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。 返回 n 变为 1 所需的 最小替换次数 。 示例 1: 输入:n = 8输出:3解释:8 -> 4 -> 2 -> 1 示例 2: 输入:n = 7输出:4解释:7 -> 8 -> 4 -> 2 -> 1或 7 ->

SpringBoot 集成 SpirePDF 实现文本替换

SpirePDF 10.6.2 很强大,API 也封装的很好,使用的时候及其舒适。但是需要购买许可,不然有很大限制,最大的问题在于会添加水印,这就导致基本上用不了。有钱真好,真是嘴馋。 好在 SpirePDF 也有版本较老的免费版本,有查到一个 5.1.0。接下来附上使用代码 1、在 pom.xml 文件中添加他们的源 <!-- 使用 huawei / aliyun 的 Maven 源,提升

NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001

由于需要对NFI进行汉化,以及二次开发,首先要下载源码以后编辑通过,NIFI的源码,项目非常多,编译过程中需要编译超过570个jar包,同时编译过程很慢需要30多分钟. 1.首先下载NIFI源码,根据需要下载对应版本: https://github.com/kemixkoo/orchsym-runtime/   首先介绍一下,这个是一个公司根据nifi进行定制开发的,已经汉化,但是不能商

替换Windows AD时,网络准入场景如何迁移对接国产身份域管?

Windows AD是迄今为止身份管理和访问控制领域的最佳实践,全球约90%的中大型企业采用AD作为底层数字身份基础设施,管理组织、用户、应用、网络、终端等IT资源。但随着信创建设在党政机关、金融、央国企、电力等各行各业铺开,对Windows AD域的替换成为企业信息安全建设中不可避免的议题之一。 鉴于AD在企业中的应用程度不同,可将企业分为轻度、中度及深度三类Windows&nbsp;AD

​​NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002

继续,执行pom.xml引入依赖以后,发现以下几种报错: 可以看到在下载aws-java-sdk-bundle 1.12.710版本的时候报错了 可以看到日志信息,就是在阿里云上下载的,因为阿里云上缺少这个jar包 aws-java-sdk-bundle-1.12.710.jar 这个jar包,我还特意去阿里云上查询了一下 https://developer.aliyun.com/

剑指offer——替换字符

/*** 剑指offer* 替换字符*/import java.util.Scanner;public class Solution {public String replaceSpace(StringBuffer str) {String s=str.toString();StringBuilder st=new StringBuilder(); for(int i=0;i<s.leng

【Python 千题 —— 算法篇】字符串替换

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 在日常编程中,我们经常会遇到需要对字符串中的特定字符或子串进行替换的需求。比如,替换文本中的敏感词汇、修改文本中的标记符号、修正输入中的错误字符等。字符串替换在文本处理、数据清洗、格式转换等任务中非常常见。