SQL SERVER数据库一次删除多条记录的方法

可以使用存储过程进行批量删除,传递参数为需要删除的记录id列表,使用固定格式,可以使用固定的连接符

如:id1:id2:id3

下面请看例子:

为了使用一个存储过程,更新表t_table中的cameraurl的值,

存储过程中使用参数@serials, 格式为id1:serial1,id2:serial2,id3:serial3

                DECLARE @PointerPrev int =1
		DECLARE @PointerCurr int 
		DECLARE @Index int --冒号:的位置
		DECLARE @TVar varchar(16)  --摄像头ID和序列号 格式:ID:Serial
		DECLARE @EId  int ---摄像头ID
		DECLARE @TSerial varchar(16)  --摄像头序列号
     
		while (@PointerPrev < LEN(@serials)) 
		Begin 
			Set @PointerCurr=CharIndex(',',@serials,@PointerPrev) 
			if(@PointerCurr>0) 
			Begin 
				set @TVar=SUBSTRING(@serials,@PointerPrev,@PointerCurr-@PointerPrev) 
				Set @index = CharIndex(':', @TVar)
				Set @EId = SUBSTRING(@TVar,1, @index-1)
				Set @TSerial = SUBSTRING(@TSerial, @Index, LEN(@TVar)-@Index)
				update t_table set cameraurl = @TSerial where id=@EId 

				SET @PointerPrev = @PointerCurr+1 
			End 
			else 
				Break 
		End 

		--删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除 
		set @TVar=SUBSTRING(@serials,@PointerPrev,LEN(@serials)-@PointerPrev+1) 
		Set @index = CharIndex(':', @TVar)
		Set @EId = SUBSTRING(@TVar,1, @index-1)
		Set @TSerial = SUBSTRING(@TSerial, @Index+1, LEN(@TVar)-@Index)
		
             update t_table set cameraurl = @TSerial where id=@EId 

同理,如果是一次删除多条记录也是同样的方法。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些可能有助于优化具有600万条记录SQL Server数据库表的方法: 1. 索引优化:确保表中的列具有适当的索引,以便查询可以快速执行。可以使用SQL Server Management Studio (SSMS) 来评估现有索引或者创建新索引。 2. 分区:将数据分成更小的区块,这样查询只需要扫描部分数据,而不是全部。可以按照时间、地理位置或其他相关因素来分区。 3. 数据库表设计优化:确保表结构合理,尽可能减少冗余数据,使用适当的数据类型和数据长度。 4. 存储过程和函数优化:尽可能使用存储过程和函数,而不是直接在代码中写SQL查询。存储过程和函数可以预编译,减少网络传输的数据量,提高执行速度。 5. 数据库缓存和内存优化:在服务器上增加内存,将常用的数据缓存在内存中,可以提高查询性能。 6. 避免全表扫描:尽可能避免使用 SELECT * 或者不带 WHERE 条件的查询,因为这会导致全表扫描,造成性能问题。 7. 数据库分离:如果有多个数据库,可以考虑将其分离,减少对同一数据库的并发访问。 8. 数据库备份和恢复优化:定期备份数据库,以便在数据丢失或损坏时可以快速恢复,同时也可以优化备份和恢复操作的时间。 以上是一些可能有助于优化具有600万条记录SQL Server数据库表的方法,但具体的优化方案需要根据具体情况进行分析和实施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值