有四个表,从另一台电脑的SQL Server导入到access,也是很快的(客户操作的,我不知道具体时间,但不至于无法忍受)。
同样的数据,我从access再导入到我的电脑的SQL Server
我是用select * from 这样把数据查出来,(几乎瞬间查出来),再通过拼SQL语句,一条一条的insert进去,
刚开始的时候,还能瞬间一千来行,越到后来越慢,现在1秒都没有一行了,吃了个饭回来,才加了500来行。SQL Server 2005 进程持续占用CPU25%,别的进程几乎是0。
为了插的时候方便,暂时把表的ID列的主键属于也去掉了。
到底是什么原因呢?
------解决方案--------------------
不要在程序端循环insert,在SQL Server端做循环insert
CREATE TABLE #tempTable([Item ID] [bigint], [Item Name] nvarchar(30))
DECLARE @counter int
SET @counter = 1
WHILE (@counter < 100000)
BEGIN
INSERT INTO #tempTable VALUES (@counter, 'Hammer')
SET @counter = @counter + 1
END
SELECT * FROM #tempTable
DROP TABLE #tempTable
------解决方案--------------------
可以使用bcp ,backup insert 等批量插入命令