top

笔记130 几种循环插入方式的比较

笔记130 几种循环插入方式的比较

复制代码
 1 --几种循环插入方式的比较
 2 USE [tempdb]
 3 CREATE TABLE #TestInsert
 4 (
 5      Number INT PRIMARY KEY
 6 );
 7 GO
 8 --循环插入,不给力,我的笔记本3秒
 9 DECLARE @index INT;
10 SET @index = 1;
11 
12 WHILE @index <= 10000
13 BEGIN
14      INSERT #TestInsert(Number) VALUES( @index);
15      SET @index = @index + 1;
16 END
17 TRUNCATE TABLE #TestInsert
18 
19 
20 --放到一个事务中循环,略好,但也不是最好,我的笔记本不用1秒
21 BEGIN TRAN
22 DECLARE @index INT;
23 SET @index = 1;
24 
25 WHILE @index <= 10000
26 BEGIN
27      INSERT #TestInsert(Number) VALUES( @index);
28      SET @index = @index + 1;
29 END
30 
31 COMMIT
32 
33 --批量插入,10W行,显示0秒,有兴趣的同学改成100W行进行测试
34 INSERT #TestInsert(Number)
35      SELECT TOP (100000) rn = ROW_NUMBER() OVER
36           (ORDER BY c1.[object_id])
37           FROM sys.columns AS c1
38           CROSS JOIN sys.columns AS c2
39           CROSS JOIN sys.columns AS c3
40           ORDER BY c1.[object_id];
41 
42 
43 --CTE方式,和上面那种方式大同小异,也是批量插入,比如:
44 WITH cte AS(
45      SELECT TOP (100000) rn = ROW_NUMBER() OVER
46           (ORDER BY c1.[object_id])
47           FROM sys.columns AS c1
48           CROSS JOIN sys.columns AS c2
49           CROSS JOIN sys.columns AS c3
50           ORDER BY c1.[object_id]
51 )
52 INSERT #TestInsert(Number) SELECT rn FROM cte
复制代码

 

posted @   桦仔  阅读(511)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示