Sqlserver——查询技巧/优化方案——大批量插入的选择(循环插入Or临时表Or表变量插入)

本文探讨了在SQLServer中进行大批量插入时,循环语句、临时表和表变量的效率及并发性。在循环插入中,使用显式事务能显著提升效率。当表无唯一键时,外部插入不会阻塞事务,但有唯一键时则会发生锁表。临时表和表变量虽然插入速度较慢,但能减少事务锁,提高并发性。
摘要由CSDN通过智能技术生成


         1、循环语句的插入效率问题
                 为循环插入语句的外围增加一个显示事务,会大幅度的提高循环插入的效率
          
            eg1:

DECLARE @bdate DATETIME

DECLARE @edate DATETIME

SET NOCOUNT ON 
DECLARE @i INT=1
DECLARE @q INT=500000

SET @bdate=GETDATE()

CREATE TABLE TEST_20190218
(
ID INT PRIMARY KEY,
NAME UNIQUEIDENTIFIER,
CREATEDATE DATETIME
)



WHILE @i<=@q

BEGIN
	INSERT TEST_20190218 
	SELECT @i,NEWID(),GETDATE()
    SET @i=@i+1
END


SET @edate =GETDATE()

 SELECT '花费时间:'+CONVERT(NVARCHAR(20),DATEDIFF(MILLISECOND,@bdate,@edate))+'ms'

      
            与

            eg2:    

DECLARE @bdate DATETIME

DECLARE @edate DATETIME


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值