批量性能(CTE、事務、NoCount等)

步驟一、創建兩個表

CREATE TABLE [dbo].[Test_Old](
    [ID] [nvarchar](50) NULL
)
CREATE TABLE [dbo].[Test_New](
    [ID] [nvarchar](50) NULL
)

步驟二、使用事務、設置NoCount,先創建基礎數據:向表Test_Old中插入10萬條數據

----清除干擾查詢  
DBCC DROPCLEANBUFFERS  
DBCC FREEPROCCACHE  
--開啟IO和時間統計
SET STATISTICS IO ON;  
SET STATISTICS TIME ON;  
GO 
--*****************************************************正文
--1.循環插入
declare @i int,@d Datetime   
SET @d=getdate();  
SET @i = 1
--1.1 設置 NoCount 
SET NoCount On
--1.2 開啟事務
BEGIN TRANSACTION 
while @i < 100000
begin
set @i = @i + 1
END
--關閉IO和時間統計*****************************************************
SET STATISTICS IO OFF ;  
SET STATISTICS TIME OFF;  
GO  

步驟三、使用CTE公用表表達式,從Test_Old向Test_New中插入數據(性能極高)

WITH B AS 
(
    SELECT * FROM Test_Old
)
Insert into Test_New(ID) select ID from B
  1. The end,thank you!
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 步驟一、創建兩個表 步驟二、使用事務、設置NoCount,先創建基礎數據:向表Test_Old中插入10萬條數據 ...
    AsaGuo閱讀 350評論 0 0
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 50個常用的sql語句Student(S#,Sname,Sage,Ssex) 學生表Course(C#,Cname...
    哈哈海閱讀 1,252評論 0 7
  • 我想矯情一次,是的,是有點矯情。 來到這座城市這是第六年,熟悉而又陌生。 曾經與大學舍友帶著從學校餐廳買的飯走過大...
    芋頭果兒閱讀 187評論 0 0
  • 談一談js中call()和apply()方法 在最近看的js書中,提及到了,Math對象,有max和min方法,當...
    Kris_lee閱讀 146評論 0 1