总有源数据吧?为什么要循环,可以一次性插入的啊。
INSERT INTO a (...)
SELECT ...
  FROM b
 WHERE ...

解决方案 »

  1.   

    哦,没有源数据,因为现在测试系统在数据多的情况下运行的速度,所以就用循环来插入客户表,这样可以保证每个字段都有值,但这个循环就是贼慢,用insert into ...select * from这种会快一点吗?
      

  2.   

    快好多。
    数据有规律的测试可以直接从已有的数据翻倍插入。
    单记录循环弱报了。
    INSERT INTO a (id,...) VALUES (1,...) -- 第一条
    SELECT @Cnt = COUNT(*) FROM a-- 只需要15次循环
    WHILE @Cnt < 30000
    BEGIN
      INSERT INTO a (id,...)
      SELECT id+@Cnt,...
        FROM a
      SELECT @Cnt = COUNT(*) FROM a
    END
      

  3.   

    试了一下,还是很慢,什么原因呢,我是这样的
    INSERT INTO dbo.Account (AccountId,...剩下的100多个字段)
    select top 100 newid(),...from dbo.Acount  where...,查询Account表里的100条数据插到Account表中,只有id用newid()生成,但就是这100条,就用了1分半钟
      

  4.   

    排除 INSERT 部分,仅 SELECT 部分运行时间多少。如果 INSERT 和 SELECT 差异很大,那么:
    除了聚集索引,其他的索引、外键都删除,再试试。
    全部测试数据插入后再重建。