SQL数据库 用存储过程插入100W条数据

用SQL数据库存储过程插入100W条数据 应该用什么方法增加效率呢 不明白 如果普通的写法 现在我已经等了10分钟了- - 求高手指教 应该有优化的方法 或者算法把

看看别人的文章:http://blog.csdn.net/zjcxc/archive/2006/08/20/1099215.aspx 最近在论坛看到有人问,如何快速生成100万不重复的8位编号,对于这个问题,有几点是需要注意的:1. 如何生成8位随机数,生成的数越随机,重复的可能性当然越小2. 控制不重复3. 考虑性能针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导 生成100万条8位不重复数据的示例USE tempdbGO -- 创建测试表CREATE TABLE tb(id char(8)) -- 创建用于自动过滤重复值的唯一索引CREATE UNIQUE INDEX IX_tb ON tb(id)WITH IGNORE_DUP_KEY GO -- 测试数据插入的处理时间, 记录开始处理的时间点DECLARE @dt datetimeSET @dt = GETDATE() -- 插入随机数据SET NOCOUNT ONDECLARE @row intSET @row = 1000000 -- 设置总记录数WHILE @row >0BEGIN -- 显示提示信息, 表示还需要插入多行数据 RAISERROR('need %d rows', 10, 1, @row) WITH NOWAIT -- 插入随机的位编码数据 SET ROWCOUNT @row INSERT tb SELECT id = RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 8) FROM syscolumns c1, syscolumns c2 SET @row = @row - @@ROWCOUNTEND -- 显示插入数据使用的时间SELECT BeginDate = @dt, EndDate = GETDATE(), Second = DATEDIFF(Second, @dt, GETDATE()),GO -- 显示最终的结果记录是否正确SELECT COUNT(*) FROM tbGO -- 删除测试DROP TABLE tb 本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/zjcxc/archive/2006/08/20/1099215.aspx
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-12
你建一个唯一的非聚集索引,并指定IGNORE_DUP_KEY=ON
这样你在导入时,用循环
拼一堆:"insert into ..."
然后,一并提交给sql server去执行。
第2个回答  2013-04-12
在存储过程里面用循环体!
第3个回答  2013-04-12
1.用sqlloader
2.或者试试 insert /*+ append */
第4个回答  2013-04-12
先把索引关闭