在没有设置SET NOCOUNT ON的情况下SQL Server 2012的批量Insert为什么很慢?解决办法
在没有设置SET NOCOUNT ON的情况下SQL Server 2012的批量Insert为什么很慢?
以下语句在同一台PC的不同实例:SQL Server 2012及SQL Server 2008 r2版本中,分别执行时间为
SQL Server 2012居然耗时达到317秒,而SQL Server 2008R2版,只需要大约6秒钟。
至于改进方法,有三个,看这里
http://blog.csdn.net/downmoon/article/details/7475841
知道的同学请回复一下,这个差异是为什么?谢了。
------解决方案--------------------
差异还挺大,关注一下。
------解决方案--------------------
执行计划有什么差别吗?
------解决方案--------------------
关注,是否硬盘有问题,保证2012的数据库和2008的数据库放在同一个硬盘?
------解决方案--------------------
以下语句在同一台PC的不同实例:SQL Server 2012及SQL Server 2008 r2版本中,分别执行时间为
SQL Server 2012居然耗时达到317秒,而SQL Server 2008R2版,只需要大约6秒钟。
至于改进方法,有三个,看这里
http://blog.csdn.net/downmoon/article/details/7475841
知道的同学请回复一下,这个差异是为什么?谢了。
- SQL code
IF OBJECT_ID('Customers','U') IS NOT NULL DROP TABLE Customers CREATE TABLE Customers ( CustomerID INT primary key identity(1,1), CustomerNumber CHAR(4), CustomerName VARCHAR(50), CustomerCity VARCHAR(20) ) GO TRUNCATE table Customers GO ----清除干扰查询 DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE SET STATISTICS IO ON; SET STATISTICS TIME ON; GO DECLARE @d Datetime SET @d=getdate(); declare @i int=1 while @i<=10000 begin INSERT INTO Customers (CustomerNumber, CustomerName, CustomerCity) SELECT REPLACE(STR(@i, 4), ' ', '0'),'Customer ' + STR(@i,6), CHAR(65 + (@i % 26)) + '-City' set @i=@i+1 end select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate()) SET STATISTICS IO OFF ; SET STATISTICS TIME OFF; GO
------解决方案--------------------
差异还挺大,关注一下。
------解决方案--------------------
执行计划有什么差别吗?
------解决方案--------------------
关注,是否硬盘有问题,保证2012的数据库和2008的数据库放在同一个硬盘?
------解决方案--------------------