我觉得可能有两种情况,一是你的系统的问题,二你的数据库表的问题
我在我机子上测试了就很快
create table #test(id varchar(20),name varchar(30),email varchar(50))declare @count int
     set @count=38197
     while @count > 12162
      begin
      set nocount on
           insert into #test(id,name,email) values(@count,'1111','可口可乐系列')
       set @count = @count -1
      set nocount off
      end
      print @count
select * from #test

解决方案 »

  1.   

    如果是大规模循环的插入的话,把循环体内的部分改一下用sp_executesql可以得到缓存优化的效果。
      

  2.   

    这是我productkc库的表结构,大家指点一下问题所在
    autoid     bigint 8
    officeid     varchar 20
    tiaoma     varchar 30
    productxili  varchar 120
    productname  nvarchar 200
    productsize  nvarchar 200
    productdan   varchar 20
    productnum   numeric 9
    producttai   varchar 80
    makein       varchar 50
    beizhu       varchar 30
    productjia   numeric 9
    moncount1    numeric 9
    lirun1       numeric 9
    monthjie     nvarchar 10
    indate       datetime 8
    productsell  numeric 9
    osell1       numeric 9
    osell2       numeric 9
    producttai1  varchar 100
    carmode      varchar 200
    bgtiaoma     varchar 30
    bgdw         varchar 20
      

  3.   

    TO iamltd你说用sp_executesql是怎用的? 麻烦就我的例子帮改造一下行吗?
      

  4.   

    在分析器单独插入如下资料竟用了18秒.....无法接受.....到底是怎回事的呢??
    insert into productkc(officeid,tiaoma,productxili,productname,productsize,productdan,productnum,producttai,makein,beizhu,productjia,moncount1,lirun1,monthjie,indate,productsell,osell1,osell2,producttai1,carmode,bgtiaoma,bgdw) values('1',@count,'可口可乐系列','2.3L胶瓶芬达橙','2300L','瓶','45','A仓库',NULL,'','6','270.45','6.01','0','2006-3-12','8','0','0','1号货架','','','')
      

  5.   

    begin
          set nocount on
               insert into productkc(officeid,tiaoma,productxili,productname,productsize,productdan,productnum,producttai,makein,beizhu,productjia,moncount1,lirun1,monthjie,indate,productsell,osell1,osell2,producttai1,carmode,bgtiaoma,bgdw) values('1',@count,'可口可乐系列','2.3L胶瓶芬达橙','2300L','瓶','45','A仓库',NULL,'','6','270.45','6.01','0','2006-3-12','8','0','0','1号货架','','','')
           set @count = @count -1
          set nocount off
          end
    -----------------------
     set nocount on set nocount off这放在外面阿 放在里面循环干吗?
      

  6.   

    declare @sql nvarchar(800)set @sql=N'insert into productkc(officeid,tiaoma,productxili,productname,productsize,productdan,
    productnum,producttai,makein,beizhu,productjia,moncount1,lirun1,monthjie,indate,
    productsell,osell1,osell2,producttai1,carmode,bgtiaoma,bgdw) values('
    +'''1'''+',@tcount,'+'''可口可乐系列'''+','+'''2.3L胶瓶芬达橙'''+','+'''2300L'''
    +','+'''瓶'''+','+'''45'''+','+'''A仓库'''+',NULL,'+''''''+','+'6,270.45,6.01,0,'+'''2006-3-12'''
    +',8,0,0,'+'''1号货架'''+','+''''''+','+''''''+','+''''''+')';exec sp_executesql @SQL,N'@tcount int',@tcount=@count;试试吧