哦,没有源数据,因为现在测试系统在数据多的情况下运行的速度,所以就用循环来插入客户表,这样可以保证每个字段都有值,但这个循环就是贼慢,用insert into ...select * from这种会快一点吗?
快好多。 数据有规律的测试可以直接从已有的数据翻倍插入。 单记录循环弱报了。 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
试了一下,还是很慢,什么原因呢,我是这样的 INSERT INTO dbo.Account (AccountId,...剩下的100多个字段) select top 100 newid(),...from dbo.Acount where...,查询Account表里的100条数据插到Account表中,只有id用newid()生成,但就是这100条,就用了1分半钟
数据有规律的测试可以直接从已有的数据翻倍插入。
单记录循环弱报了。
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
INSERT INTO dbo.Account (AccountId,...剩下的100多个字段)
select top 100 newid(),...from dbo.Acount where...,查询Account表里的100条数据插到Account表中,只有id用newid()生成,但就是这100条,就用了1分半钟
除了聚集索引,其他的索引、外键都删除,再试试。
全部测试数据插入后再重建。