SQL在1秒内插入100万行数字列的语句

本文和大家分享一下在数据库中1秒插入100万行数字列,利用Identity快速创建和填充数字表,适用于SQL2000;100万数据10秒内生成完成

   
   
DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE declare @beginTime datetime set @beginTime = getdate () SELECT TOP 1000000 IDENTITY ( INT , 0 , 1 ) AS idx INTO dbo.t_Numbers FROM master.sys.all_columns c1 CROSS JOIN master.sys.all_columns c2 select datediff (ms, @beginTime , getdate ()) as [ Time(ms) ] /* (1000000 行受影响) Time(ms) ---------- 8563 */ -- 利用row_number更加快速地创建和填充数字表;100万数字表1s内就生成好了 drop table t_Numbers DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE declare @beginTime datetime set @beginTime = getdate () SELECT TOP 1000000 ROW_NUMBER() over ( order by c1. object_id ) AS N INTO dbo.t_Numbers FROM master.sys.all_columns c1 CROSS JOIN master.sys.all_columns c2 select datediff (ms, @beginTime , getdate ()) as [ Time(ms) ] /* (1000000 行受影响) Time(ms) ----------- 843 */

Identity的主要IO

表'syscolrdb'。扫描计数1,逻辑读取95 次,物理读取0 次,预读115 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

表'syscolpars'。扫描计数2,逻辑读取11 次,物理读取1 次,预读16 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

表'Worktable'。扫描计数0,逻辑读取0 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

 

row_number的主要IO

表'syscolrdb'。扫描计数2,逻辑读取110 次,物理读取2 次,预读97 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

表'syscolpars'。扫描计数2,逻辑读取10 次,物理读取2 次,预读47 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值